Home > GNU/Linux > Scovare le differenze tra due directory

Scovare le differenze tra due directory

Vi è mai capitato di avere due cartelle da confrontare? Cioè sapere se un file è presente in entrambe o se ci sono files differenti?

diff

A me si… :-)

E per risolvere questo “problemino” utilizzo il solito comando diff ma con alcune opzioni, precisamente “-r –brief”:
diff -r --brief dir_a dir_b
L’output che viene prodotto è abbastanza semplice da interpretare, cioè verranno mostati i file presenti in dir_a che non lo sono in dir_b e viceversa, inoltre per ogni file presente in entrambe le cartelle, verranno mostrati quelli diversi:
Solo in dir_a: nuovo
Solo in dir_b: standard.1
I file dir_a/standard.2 e dir_b/standard.2 differiscono

spero possa tornarvi utile ;)

Categories: GNU/Linux Tag:, ,
  1. 17 Gennaio 2009 alle 14:31 | #1

    Ottima segnalazione! Mi permetto di aggiungere, per chi non sopporta il terminale, che con meld può fare la stessa cosa. :)

  2. mk66
    22 Gennaio 2009 alle 10:06 | #2

    Questa è telepatia! :D
    Proprio ieri mi sono trovato con un problema del genere (sono abbastanza casinista), cerco in Giro per trovare una soluzione rapida e indolore e, nel frattempo, provo a passare qua dal Maestro ;) e che trovo?
    Ben 2 soluzioni già pronte all’uso!!! :D
    Grazie a entrambi :D

  3. mk66
    26 Gennaio 2009 alle 14:24 | #4

    Non è troppo, te lo assicuro.. ;)

    Ha funzionato perfettamente e ora ho un bell’elenco di file diversi dentro le due directory (in realtà le dir sono 4, e i confronti li ho fatti tra le prime 2, tra la 2 e la 3 e tra le ultime 2, quindi ho 3 report di differenze). Adesso devo solo trovare il modo di unire le varie directory in una sola senza combinare troppi disastri e senza fare le cose a manina, visto che si tratta di qualche centinaio di file.

    Probabilmente basterebbe fare direttamente uno spostamento da Nautilus, ma quando dice “unisco tutto” e “sostituisco tutto” non capisco in base a quali specifiche unisce e sostituisce “tutto” (in pratica, non vorrei che mi sostituisse la copia recente con quella meno recente o cose simili)
    Appena ho un pò di tempo, mi studierò bene il man di diff e di mv, e con le guide che mi hai indicato le volte precedenti, forse riuscirò a buttare giù qualcosa di buono.

  4. 30 Gennaio 2009 alle 8:16 | #5

    A saperlo prima :-| interessante però qui, mi sa tanto che tornerò spesso, ho decisamente bisogno di una “guida” :-)

  5. mau
    30 Gennaio 2009 alle 20:07 | #6

    ottima dritta ,,,,, comodissimo

  6. mk66
    2 Febbraio 2009 alle 22:00 | #7

    Scusa l’OT, ma devo ringraziarti di nuovo e confermarti il titolo di “Maestro” :D

    Ieri sera ho avuto un problema con la partizione di swap, improvvisamente sparita (???), vado sul forum di Ubuntu per cercare una soluzione e l’ho trovata subito, ma indovina di chi era il post che mi ha fatto risolvere? ;)

  7. andrea
    17 Aprile 2009 alle 8:39 | #9

    Molto interessante, ma io ho un problema più complicato :-(
    Mi puoi aiutare?

    Le due cartelle hanno vissuto una vita indipendente. Quindi molti file hanno cambiato di nome e di sottodirectory.

    $ diff -r –brief dir_a dir_b |wc -l
    229

    Troppi falsi positivi!

    La mia idea era di preparare uno script che confrontasse effettivamente i file (tramite cmp o md5sum) delle due directory, uno per uno.
    Sai se c’è qualcosa di già pronto per l’uso?

  8. 18 Aprile 2009 alle 16:13 | #10

    Che io sappia no, ma è molto interessante come problema e credo che quella che hai indicato sia la soluzione giusta, difficile forse da implementare ma comunque la più corretta ;)

  9. fantasmino
    30 Aprile 2009 alle 7:34 | #11

    Per il confronto posso consigliare anche l’ottimo programma “Meld” (con la “elle”!)
    sudo apt-get install meld
    che fa il confronto sia tra directory sia tra file, comodissimo. Il massimo è il confronto tra tre oggetti, ma in genere basta…

  1. No trackbacks yet.