Porovnejte obsah dvou adresářů z příkazového řádku

Anonim

Chcete-li porovnat a vypsat různé obsahy dvou adresářů bez dalšího výstupu, který získáte prostřednictvím příkazů jako diff, můžete místo toho použít příkaz comm. Chcete-li začít, spusťte Terminál a zadejte následující příkaz a podle potřeby upravte cesty k adresáři:

comm -3 <(ls -1 složka1) <(ls -1 složka2)

Uvedeným výstupem budou soubory, které se v každé složce liší, přičemž soubory jedinečné pro složku 1 jsou zarovnány doleva a soubory jedinečné pro složku 2 jsou zarovnány doprava.

Například pro porovnání obsahu složky nazvané „Pictures“ a složky s názvem „OldPictures“, obě uložené v adresáři uživatelských stažených souborů, by syntaxe byla následující:

comm -3 <(ls -1 ~/Stahování/Obrázky) <(ls -1 ~/Stahování/Staré obrázky)

Výstup může vypadat takto:

$ comm -3 <(ls -1 ~/Stahování/Obrázky) <(ls -1 ~/Stahování/Staré obrázky) Složka-1-Soubor.Složka PNG -2-File copy.PNG photo 1 copy.PNG photo 3.PNG

Všimněte si odsazení, které ukazuje, které soubory jsou jedinečné pro každou složku. Ve výše uvedeném příkladu jsou soubory „photo 1 copy.PNG“ a „photo 3.png“ zarovnány doprava, proto jsou jedinečné pro adresář OldPictures a Folder-1-File.Kopie souborů PNG a složky 2. PNG jsou jedinečné pro původní složku Obrázky.

To funguje skvěle v Mac OS X, ale je to generický unixový příkaz, takže byste jej měli najít použitelný i v linuxu a dalších variantách. Pokud narazíte na nějaké problémy s kompatibilitou nebo zjistíte, že tento příkaz je zbytečně složitý, zkuste použít diff k provedení stejné funkce.

Skvělý trik našel @climagic na Twitteru, @osxdaily je tam taky!

Porovnejte obsah dvou adresářů z příkazového řádku