Porovnejte obsah dvou adresářů z příkazového řádku
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!