Comparare i contenuti di due cartelle con il Terminale

6 novembre 2015 ore 20:39 | di | 3 commenti

Terminale confronto diretory

Se desiderate confrontare il contenuto di due directory (cartelle) per sapere in che cosa differiscono, non avete bisogno di utility di terze parti, e neppure di scaricare alcuni gigabyte per installare FileMerge incluso nel pacchetto Xcode (freeware), infatti è sufficiente il Terminale (si trova nella cartella Applicazioni/Utility).

Se le cartelle da confrontare si trovano in Documenti all’interno della Home (la cartella con l’icona di una casetta con il vostro nome utente), lanciato il Terminale, scrivete il seguente comando, dove cartella e cartella1  corrispondono ai nomi delle cartelle da confrontare.

diff -rq cartella cartella1 

Ecco il risultato:

diff -rq cartella cartella1
Files cartella/.DS_Store and cartella1/.DS_Store differ
Only in cartella: Q4-2105-Vendite-Mac.png
Only in cartella1: Screen Shot 2015-11-05 at 11.51.26.png
Only in cartella1: Telecomando-Apple-TV-livelllo-batteria.png

Ovviamente, questo è un esempio semplicistico, ma funziona altrettanto bene su una cartella di grandi dimensioni con centinaia di file. Se si desidera confrontare due cartelle che non si trovano della Home, dovete spostarvi con il comando cd, ad esempio se si trovano sulla scrivania:

cd Desktop

diff -rq cartella cartella1

Approfondimenti: ,

Argomento: Tip OS X

Commenti (3)

RSS commenti

  1. Guido D'Amore scrive:

    Lungi da me l’essere pignolo ma il comando “cd” non server per indicare il percorso. Il comando “cd” server per spostarsi all’interno del filesystem, cambiando dunque la directory di lavoro corrente della shell invocata tramite il Terminale. Quindi se prima si usa il comando “cd” ci si sposta all’interno di un’altra directory e usando poi il comando “diff” si confrontano due directory presenti nella directory in cui ci si è spostati.

    Se si vuole evitare il passaggio in più si può si indicare il percorso delle directory da confrontare ma non lo si fa con il comando “cd”, bensì dando come argomento al comando “diff” il path directory delle directory da confrontare. E.g.: voglio confrontare la directory Desktop presente nella Home con la directory “Fatture ENEL” presente in Documenti; allora da Terminale do

    diff -rq Desktop “~/Documents/Fatture ENEL”

    dove l’uso delle doppie virgolette è reso necessario dalla presenza del carattere speciale spazio bianco presente nel nome della directory “Fatture ENEL” e l’uso di Documents in luogo di Documenti perché il Terminale a differenza del Finder non traduce i nomi dei nodi del filesystem nella lingua di localizzazione di OS X.

  2. luca scrive:

    Si può usare per conftontare una cartella sull’HD del mac ed una con lo stesso nome, ma su un HD esterno? cosa si dovrebbe scrivere?

    • Stefano Donadio scrive:

      Si, si può fare anche con una cartella su un hard disk esterno. Devi solo mettere il comando diff -rq e poi i due percorsi che puoi ricavare trascinando la cartella nel Terminale. Ad esempio quello della cartella film che ho sull’hard disk esterno è /Volumes/film, quindi per confrontare la cartella film che ho nella home e quella su hard disk esterno il comando è:

      diff -rq film /Volumes/film

Aggiungi un commento