Menu

30 maart 2012

Mappen vergelijken onder OS X Terminal

Wanneer je de inhoud van twee mappen met elkaar wilt vergelijken dan kun je daar OS X Terminal voor gebruiken. Onder OS X Terminal heb je namelijk de beschikking over het unix commando diff.

Stel je hebt een foutje gemaakt met het kopiëren van mappen. Je hebt twee mappen met muziek, één met de naam ‘nieuwe muziek’ en één genaamd ‘oude muziek’. In beide mappen zit voor 90% de zelfde inhoud maar ook verschillende bestanden. Je kunt de mappen dan als volgt met het diff commando vergelijken.

diff -rq map1 map2 >> output.txt

Map1 en map2 zijn de mappen die vergeleken moeten worden en het resultaat wordt weggeschreven als een tekstbestand. Met de parameter -r geven we aan dat ook sub mappen moeten worden vergeleken. Met de toevoeging van -q parameter worden alleen de verschillen weergegeven.

Als we de gegevens van ons voorbeeld gebruiken dan wordt het commando:

diff -rq "oude muziek" "nieuwe muziek" >> resultaat.txt

In de map waar je het commando uitvoert wordt het tekstbestand ‘resultaat.txt’ aangemaakt. Wanneer je deze opent met teksteditor krijg je een soortgelijk overzicht:

Only in old music: blur – country house.mp3
Only in old music: greenday – american idiot.mp3
Only in new music: yukari fresh – horsey mary .mp3
Only in new music: robyn – dancing on my own.mp3

Natuurlijk kun je het tekstbestand ook bekijken in OS X Terminal, dit doe je met het commando:

more resultaat.txt

Wanneer je standaard OS X teksteditor applicatie wilt gebruiken:

open -e resultaat.txt

In het tekstbestand wordt aangeven wat de verschillen zijn tussen de beide mappen. Wanneer een bestand in beide mappen voorkomt dan wordt dit niet weergeven omdat we de -q parameter gebruiken, alleen de verschillen verschijnen in het tekstbestand.




Gerelateerde tips:




Reacties


  • Piet 31 maart 2012 om 18:43

    Dit is serieus de handigste tip die ik in 8 manden Appletips voorbij heb zien komen :) Thanks!
    Is er trouwens een app die deze functionaliteit uitbreid? (Bijvoorbeeld dezelfde bestanden met andere filename ook herkent)

  • Piet 2 juni 2012 om 21:27

    Richard, ik probeer twee externe harde schijven te vergelijken en krijg deze melding: diff: /Volumes/1000 GB (LaCie)/.Trashes: Permission denied
    Enig idee hoe ik jouw tip toch kan gebruiken?

  • Ber 19 juni 2012 om 23:57

    Compare folders for mac of goodsync zijn denk ik een mogelijkheid.

  • tinelou 7 oktober 2012 om 11:44

    waarom lukt het mij niet !!!!!!!!!!
    het lijkt zo veelbelovend

    diff – kd_201201_xhd kd_201207 >> output.txt

    krijg melding:
    “No such file or directory” bij allebei de mappen terwijl ik ze voor mn neus heb
    heb hoofd en kleine letters geprobeerd

  • tinelou 7 oktober 2012 om 11:48

    HO wacht!
    begin is niet goed gecopieerd want in terminal staat ntl
    diff -rq kd etcetra

  • tinelou 7 oktober 2012 om 12:01

    GELUKT
    met dank voor het meelezen
    nu goodsync gedaan en dat loopt als een treintje
    AAnrader!

  • Mark 21 mei 2013 om 13:04

    Van alles geprobeerd, het lukt niet. Krijg de melding “no such file or directory”. Wat klopt er niet aan deze code?
    De mappen staan gewoon op het bureaublad. Maken spaties een verschil?

    diff -rq “map1” “map2” >> resultaat.txt

    Kan deze methode overigens ook gebruikt worden voor mappen op twee externe schijven?

Een reactie toevoegen: