2009-04-22 18 views
42

Ho due directory contenenti file di origine per un progetto che ho ereditato con poca documentazione. Come faccio a confrontare entrambe le directory per vedere quali sono le differenze. Grazie.Come faccio a confrontare due alberi sorgente in Linux?

+0

Con tutte le risposte giuste di cui sopra, se avete bisogno di aiuto video che ho trovato questo video utile nella mia ricerca di risposta https://www.youtube.com/watch?v=TcJkLV1EeuU –

risposta

33

Si può provare MELD: http://meld.sourceforge.net/ che è un meraviglioso strumento diff visiva ;-)

+0

Grazie bunch- ho scoperto Meld tardivo dopo aver postato la mia domanda e fa più o meno quello che voglio. Sarebbe bello se non dovessi scaricare il codice sul mio computer locale come se fosse su un server remoto e (sfortunatamente) non controllato come CVS o Subversion. – freakwincy

+0

Meld consente di vedere le differenze nella struttura ad albero così come le differenze di riga per riga nei file. Inoltre, è possibile applicare selettivamente le modifiche in una directory all'altra. Magnifico! – 18446744073709551615

+0

In realtà avevo già utilizzato Meld per il confronto dei file, ma non ero a conoscenza del fatto che fosse fantastico per il confronto tra gli alberi. –

5

è possibile utilizzare il comando diff nella shell. O installare uno strumento come kdiff3

+2

+1 per KDiff3. Funziona a meraviglia per il confronto tra directory (e sottodirectory ecc.) –

+0

+1 - Avevo guardato KDiff3 ma non mi ero reso conto di averlo fatto a causa del mio utilizzo del drag-and-drop. È possibile * drag * n-drop directory, ma è necessario utilizzare la finestra di dialogo aperta e premere OK per avviare il confronto. – Deebster

24
diff -u -r dirA dirB 

vi mostrerà un diff ricorsiva unificato tra le file in Dira e DIRB

+0

Funziona anche in Cygwin, che era esattamente quello di cui avevo bisogno – crobicha

47

Prova questo:

diff -Naur dir1/ dir2/ 
  • L'opzione -u rende l'output di un poco più facile da leggere.
  • I -r opzione recurses attraverso tutte le sottodirectory
  • I -N e -a opzioni sono davvero necessaria solo se si voleva creare un file di patch.
1

Il comando diff per confrontare le directory continuava a dirmi che non avevo differenze, quando sapevo che c'erano differenze.

Invece di usare direttamente diff, ho usato un elenco ordinato di md5sums e poi confrontato i file con diff:

find /path1/dir/ -type f -exec md5sum {} + | awk '{print $2 $1}' | sort >! path1.log 
find /path2/dir/ -type f -exec md5sum {} + | awk '{print $2 $1}' | sort >! path2.log 
gvimdiff path1.log path2.log 

Se la parte iniziale del percorso sta causando mal di testa, poi cambiarlo. Selezionare la finestra Path1 e digitare:

:%s|path1|path2|g 

Questo sostituirà tutte le istanze di percorso1 con percorso2 nel primo file, e ora il tuo diff dovrebbe mostrare solo le differenze.

+0

Non ho mai visto '>!' Prima. Che cosa fa? –

+0

Suppongo che il bit '>!' Sia un refuso e che dovrebbe leggere '>'. In questo modo il comando e il processo hanno un senso. –

+1

+1 assumendo il carattere '>!'è cambiato in'> '; l'altra variazione minore che ho fatto è stata semplicemente cambiare directory in 'path1/dir' e fare' find .' quindi non avrei dovuto cambiare manualmente i nomi dei percorsi – mpontillo

Problemi correlati