2009-04-22 21 views
42

Tengo dos directorios que contienen archivos fuente en un proyecto que heredé con poca documentación. ¿Cómo comparo ambos directorios para ver cuáles son las diferencias? Gracias.¿Cómo comparo dos árboles fuente en Linux?

+0

Con todas las respuestas correctas proporcionadas anteriormente, si necesita ayuda con algún video, encontré este video útil en mi búsqueda de respuestas https://www.youtube.com/watch?v=TcJkLV1EeuU –

Respuesta

33

Usted puede tratar de MELD: http://meld.sourceforge.net/ que es una herramienta visual de diferencias maravillosa ;-)

+0

Gracias, un montón, descubrí Meld tardía después de haber publicado mi pregunta y hace más o menos lo que quiero. Sería bueno si no tuviera que descargar el código en mi máquina local, ya que está en un servidor remoto y (desafortunadamente) no está registrado como CVS o Subversion. – freakwincy

+0

Meld le permite ver los difs en la estructura del árbol, así como los diffs línea por línea en los archivos. Además, puede aplicar selectivamente los cambios en un directorio a otro. ¡Magnífico! – 18446744073709551615

+0

Ya había usado Meld para las comparaciones de archivos, pero no sabía que era genial para comparar árboles. –

5

puede usar el comando diff en la cáscara. O instalar una herramienta como kdiff3

+2

+1 para KDiff3. Funciona bien para comparar directorios (y subdirectorios, etc.) –

+0

+1 - Miré KDiff3 pero no me di cuenta de que lo hizo debido a que usé el método de arrastrar y soltar. Usted * puede * arrastrar y soltar directorios, pero necesitará usar el diálogo de abrir y presionar OK para que comience la comparación. – Deebster

24
diff -u -r dirA dirB 

Le mostrará un diff recursivo unificado entre los archivos de DIRA y dirB

+0

Esto también funciona en Cygwin, que era exactamente lo que necesitaba – crobicha

47

Prueba esto:

diff -Naur dir1/ dir2/ 
  • La opción -u hace que la salida de una poco más fácil de leer.
  • Los -r recursivamente opción a través de todos los subdirectorios
  • Los -N y -a opciones son realmente sólo es necesario si desea crear un archivo de revisión .
1

El comando diff para comparar directorios me decía que no tenía diferencias, cuando sabía que había diferencias.

En lugar de utilizar directamente diff, que utiliza una lista ordenada de md5sums y luego se compararon con aquellos archivos 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 

Si la parte inicial de la ruta está causando dolores de cabeza, y luego cambiarlo. Seleccione la ventana Ruta1 y tipo:

:%s|path1|path2|g 

Esto reemplazará todas las instancias de rutaDeAcceso1 con via2 en el primer archivo, y ahora su diff sólo debe mostrar las diferencias.

+0

¡Nunca antes había visto '>!'. ¿Qué hace? –

+0

¡Voy a suponer que el bit '>!' Es un error tipográfico y que debería leer '>'. De esa forma, el comando y el proceso tienen sentido. –

+1

+1 suponiendo que '>!'se cambia a'> '; la otra variación menor que hice fue simplemente cambiar el directorio a 'path1/dir' y hacer' find .' para no tener que cambiar manualmente las rutas – mpontillo

Cuestiones relacionadas