Confronta i contenuti di due directory dalla riga di comando

Per confrontare ed elencare i diversi contenuti di due directory senza l'output extra ottenuto tramite comandi come diff, è possibile utilizzare invece il comando comm. Per iniziare, avvia Terminal e digita il seguente comando, regolando i percorsi della directory come appropriato:

comm -3 <(ls -1 folder1) <(ls -1 folder2)

L'output elencato saranno i file che sono diversi in ogni cartella, con i file univoci alla cartella1 allineamento a sinistra e i file univoci alla cartella 2 allineata a destra.

Ad esempio, per confrontare il contenuto di una cartella denominata "Immagini" e una cartella denominata "OldPictures", entrambi memorizzati nella directory dei download utente, la sintassi sarebbe la seguente:

comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)

L'output potrebbe essere simile al seguente:

$ comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)
Folder-1-File.PNG
Folder-2-File copy.PNG
photo 1 copy.PNG
photo 3.PNG

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

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

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