Porovnanie obsahu dvoch adresárov z príkazového riadku

Anonim

Ak chcete porovnať a vypísať rôzny obsah dvoch adresárov bez dodatočného výstupu, ktorý získate prostredníctvom príkazov ako diff, môžete namiesto toho použiť príkaz comm. Ak chcete začať, spustite terminál a zadajte nasledujúci príkaz, pričom podľa potreby upravte cesty k adresárom:

comm -3 <(ls -1 priečinok1) <(ls -1 priečinok2)

Uvedeným výstupom budú súbory, ktoré sa líšia v každom priečinku, pričom súbory jedinečné pre priečinok 1 sú zarovnané vľavo a súbory jedinečné pre priečinok 2 sú zarovnané vpravo.

Napríklad na porovnanie obsahu priečinka s názvom „Pictures“ a priečinka s názvom „OldPictures“, oba uložené v adresári preberania používateľov, by syntax bola nasledujúca:

comm -3 <(ls -1 ~/Stiahnuté súbory/Obrázky) <(ls -1 ~/Stiahnuté súbory/Staré obrázky)

Výstup môže vyzerať takto:

$ comm -3 <(ls -1 ~/Stiahnuté súbory/Obrázky) <(ls -1 ~/Stiahnuté súbory/Staré obrázky) Priečinok-1-Súbor.Zložka PNG -2-Kopírovanie súborov.PNG fotografia 1 kópia.PNG fotografia 3.PNG

Všimnite si odsadenie, ktoré ukazuje, ktoré súbory sú jedinečné pre každý priečinok. Vo vyššie uvedenom príklade sú súbory „photo 1 copy.PNG“ a „photo 3.png“ zarovnané vpravo, preto sú jedinečné pre adresár OldPictures a Folder-1-File.Kópia súboru PNG a priečinka 2. PNG sú jedinečné pre pôvodný priečinok Obrázky.

Funguje to skvele v systéme Mac OS X, ale je to všeobecný unixový príkaz, takže by ste ho mali považovať za použiteľný aj v linuxe a iných variantoch. Ak narazíte na nejaké problémy s kompatibilitou alebo ak zistíte, že tento príkaz je zbytočne zložitý, skúste použiť funkciu diff na vykonanie rovnakej funkcie.

Skvelý trik, ktorý našiel @climagic na Twitteri, @osxdaily je tam tiež!

Porovnanie obsahu dvoch adresárov z príkazového riadku