Confronta i contenuti di due directory dalla riga di comando

Anonim

Per confrontare ed elencare i diversi contenuti di due directory senza l'output aggiuntivo che si ottiene tramite comandi come diff, è possibile utilizzare invece il comando comm. Per iniziare, avvia Terminale e digita il seguente comando, regolando i percorsi delle directory in modo appropriato:

comm -3 <(ls -1 cartella1) <(ls -1 cartella2)

L'output elencato sarà costituito dai file diversi in ogni cartella, con i file univoci della cartella 1 allineati a sinistra e i file univoci della cartella 2 allineati a destra.

Ad esempio, per confrontare il contenuto di una cartella denominata "Pictures" e di una cartella denominata "OldPictures", entrambe memorizzate nella directory dei download dell'utente, la sintassi sarebbe la seguente:

comm -3 <(ls -1 ~/Download/Immagini) <(ls -1 ~/Download/VecchieImmagini)

L'output può essere simile al seguente:

$ comm -3 <(ls -1 ~/Download/Immagini) <(ls -1 ~/Download/OldPictures) Cartella-1-File.PNG Cartella -2-Copia file.PNG foto 1 copia.PNG foto 3.PNG

Notare il rientro, che mostra quali file sono unici per ogni cartella. Nell'esempio precedente, i file "photo 1 copy.PNG" e "photo 3.png" sono allineati a destra, quindi sono univoci per la directory OldPictures e Folder-1-File.PNG e Folder-2-File copy.PNG sono univoci per la cartella Immagini originale.

Funziona alla grande in Mac OS X, ma è un comando unix generico quindi dovresti trovarlo utilizzabile anche in Linux e altre varianti. Se riscontri problemi di compatibilità o ritieni che questo comando sia inutilmente complesso, prova a utilizzare diff per eseguire la stessa funzione.

Ottimo trucco trovato da @climagic su Twitter, anche @osxdaily è lì!

Confronta i contenuti di due directory dalla riga di comando