Herramienta de comparación de archivos y directorios?

149

Estoy buscando algo que compare directorios y archivos como lo hace Beyond Compare para Windows.

Es principalmente para el uso del control de código fuente, pero también necesito usarlo para la implementación.

En desarrolloChris
fuente
¿Desea solo la lista de archivos o el contenido real de cada archivo?
Martin Ueding
Quiero la lista de archivos y, si es posible, los diferentes contenidos entre archivos con la misma ruta.
isoman
2
Sería útil si la herramienta GUI permite ocultar carpetas y archivos que son idénticos . Esto haría mucho más fácil concentrarse en las carpetas y archivos extraños. ¿Alguien conoce una herramienta que admita esta función?
JJD
Echa un vistazo al unísono . Beyond compare hace el enfoque de "ventanilla única lo hace todo", mientras que al unísono se enfoca en manejar el recorrido del árbol, mantener el estado y propagar los cambios, cubriendo las características de Beyond Compare delegando cosas como diff, fusión de 3 vías, etc. a lo que sea programa favorito trabajando a nivel de archivo. Unison es un software gratuito, muy robusto y maduro, que puede detectar y sincronizar rápidamente árboles enormes, a través de la red entre diferentes sistemas operativos, etc. Lea primero el documento, especialmente en Windows.
Stéphane Gourichon
emacs tiene una herramienta de comparación de directorios. Como todo emacs, el eye candy es, bueno, "¿qué significa eye candy incluso?", Pero muestra ayuda contextual con las teclas, permite con un par de pulsaciones el análisis recursivo, oculta archivos idénticos o incluso subdires, elige interactivamente archivos para mostrar el color diferencias codificadas con varias opciones, fusionar interactivamente, propagar o realizar ediciones arbitrarias en archivos, ir fácilmente al siguiente archivo o directorio, realizar un seguimiento del estado, con todas las facilidades de edición habituales.
Stéphane Gourichon

Respuestas:

175

Fusióninstalar meld

Meld es una herramienta que puede comparar y fusionar archivos y directorios. Es una GUI análoga a las herramientas estándar diff instalar diffutilsy de patch instalar parchelínea de comandos. (Ver man diff y man patch para más detalles sobre eso)

ingrese la descripción de la imagen aquí

Además, muchos sistemas de control de fuente (como bzr instalar bzr-gtko git instalar git) tienen la capacidad de crear diferencias entre versiones.

dv3500ea
fuente
2
Meld es INCREÍBLE. Lo uso como mi control de fuente diff.
Matt Joiner
12
Acabo de probar en una carpeta más grande: 4 GB, 2000 archivos. La funcionalidad de fusión es la deseada. Pero para esta carpeta, la fusión es extremadamente lenta y la interfaz de usuario no responde (bloquea). Usando rsync ahora.
geekQ
1
También funciona muy bien al comparar archivos de texto uno al lado del otro, o incluso copiar y pegar cosas. ¡La mejor interfaz que he visto!
Stefan Rogin el
@geekQ como una alternativa rápida, capaz de manejar una carpeta tan grande como desee instantáneamente, vea a beyond comparecontinuación. superior a
meld imho
Meld se bloquea cada vez que quiero seleccionar una carpeta: / Tengo la versión más reciente disponible en mi repositorio de distribución (Ubuntu 14.04)
Youda008
44

Diff es tu amigo.

diff -ur path1 path2

Esto comparará todos los archivos que son comunes entre path1 y path2.

Si cambia -ura -urN, eso también mostrará el contenido de los archivos que solo están presentes en una de las rutas.

Richm
fuente
1
Instalado colordiffy usadocolordiff -ur path1 path2
warvariuc
No funciona en cygwin.
Tomáš Zato
22

'Beyond Compare' también está disponible para Linux.

Verifique su URL de descarga: http://www.scootersoftware.com/download.php

aneeshep
fuente
Beyond Compare es particularmente útil cuando se hace un ssh (con clave o contraseña) a un host remoto y se compara con una copia local.
brianlmerritt
13

Usa el diffcomando:

diff -u file1 file2

diff -uselecciona un formato con algunas líneas de contexto. Un plano diff file1 file2solo enumera las diferentes líneas. Hay muchas más opciones para controlar el formato de salida, ignorar las diferencias de espacio en blanco, etc.

Si desea escribir el resultado en un archivo, rediríjalo:

diff -u file1 file2 >file1-file2.diff
Gilles
fuente
12

Comandante gnomoinstalar Gnome Commander

La interfaz puede no ser realmente sexy, ¡pero es extremadamente poderosa!

texto alternativo

Y si estaba acostumbrado a otro * Comandante (como Norton o similares), no se perderá.

Huygens
fuente
1
No lo he usado para comparar 2 archivos, pero lo he usado para decirme qué archivos eran diferentes al compararlos con los directorios. Esto es especialmente útil al ordenar fotografías ;-)
Huygens
10

Herramientas de línea de comando

Inspirado en esta entrada del blog .

diff

Listado de diferentes archivos:

diff -qr folder1 folder2

Listado también contenido:

diff -Naur folder1 folder2

rsync

Si los dos directorios no están en la misma máquina, rsyncpodría ser la solución más fácil. Por rsynclo general, se usa para sincronizar directorios, pero puede ejecutarlo en modo detallado y seco, por lo que solo enumerará los archivos que tendría que cambiar.

rsync -rvnc --delete folder1 server:/path/to/folder2

Puede omitir csi desea comparar archivos basados ​​en marcas de tiempo y tamaños de archivo para acelerar todo:

rsync -rvn --delete folder1 server:/path/to/folder2
lumbric
fuente
9

Krusaderinstalar krusader

Krusader es una herramienta gratuita (disponible en el Centro de software) que muestra el contenido de la carpeta en comparación y puede sincronizarse con muchas opciones diferentes. Puede filtrar mientras sincroniza y compara.

Krusader

Para comparar el contenido de los archivos, simplemente marque dos archivos, seleccione "archivo"> ​​"comparar contenido" y se comparan letra por letra. La herramienta de comparación predeterminada utilizada por krusader es la herramienta predeterminada de KDE " Kompare ". Puede configurar krusader para usar cualquier otra herramienta de comparación, como por ejemplo una de las anteriores.

Esta es la solución más completa que he encontrado y es muy conveniente. Y es compatible con todas las funciones de combinación de teclas utilizadas por Midnight Commander (sintaxis de Norton Commander).

piero
fuente
También puede usar "Herramientas -> Sincronizar directorios" para obtener una vista recursiva de cambios de archivos de los dos paneles de directorios.
Angelos Pikoulas
desafortunadamente, el sincronizador en krusader no se mantiene : bugs.kde.org/show_bug.cgi?id=270150#c7 . ¿Existe alguna alternativa que se mantenga activamente?
rubo77
1
@ rubo77: este error se ha corregido mientras tanto.
mivk
9

KDiff3 instalar kdiff3

Es un front-end gráfico para diferenciar para usuarios de KDE (o si no le importa usar aplicaciones Qt).

kdiff3

También hay dirdiff instalar dirdiff para directorios.

estañado
fuente
6

Quizás Meld es lo que estás buscando. O aquí hay algunas otras alternativas.

sagarchalise
fuente
4

Unison es una herramienta rápida de sincronización de archivos que utiliza el algoritmo rsync y le permite previsualizar las diferencias antes de actualizar entre 2 ubicaciones, ya sean remotas o locales.

Rog
fuente
4

Aprendí sobre hashdeep hace dos semanas. Y tiene algunas ventajas importantes:

  • En contraste con meld, funciona bien para carpetas muy grandes. Donde se meldvuelve extremadamente lento y la interfaz de usuario no responde (bloqueado), hashdeep simplemente funciona a una velocidad constante
  • En contraste con rsync, hashdeep detecta archivos movidos, archivos con el mismo contenido, solo en un directorio diferente.

La salida detallada es como:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713
geekQ
fuente
4

Una buena manera de hacer esta comparación es usar " find " con " md5sum ", luego un " diff ".

Ejemplo:

Use find para enumerar todos los archivos en el directorio, luego calcule el hash md5 para cada archivo y canalícelo a un archivo:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

Realice el mismo procedimiento para el otro directorio:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

Luego compare el resultado con dos archivos con "diff":

$diff dir1.txt dir2.txt

Esta estrategia es muy útil cuando los dos directorios a comparar no están en la misma máquina y debe asegurarse de que los archivos sean iguales en ambos directorios.

Otra buena forma de hacer el trabajo es usar git

git diff --no-index dir1/ dir2/

¡Atentamente!

Adail Junior
fuente
3

Pruebe también FreeFileSync . Tiene una interfaz decente, velocidad de comparación aceptable, buen filtrado del resultado de comparación, diferentes formas de sincronización. Viene con una herramienta de monitoreo de carpetas (RealTimeSync) que puede iniciar FreeFileSync (en realidad cualquier comando o secuencia de comandos) cuando se cambia esa carpeta específica (o carpetas) o los archivos dentro. Realmente vale la pena intentarlo.

Más información al respecto aquí o aquí , donde se tiene una PPA , también

Desde su página, las características clave:

Compare archivos (bytewise o por fecha) y sincronícelos.

Sin limitaciones: se puede sincronizar un número arbitrario de archivos.

Soporte Unicode.

Soporte de red.

Soporte incorporado para nombres de archivo muy largos (más de MAX_PATH = 260 caracteres).

Base de datos de sincronización para propagación de archivos eliminados y detección de conflictos

Soporte para múltiples pares de carpetas con configuración distinta

Soporte completo para Windows / Linux Symbolic Links y Windows Junction Points.

Interfaz de usuario sencilla y de fácil acceso: altamente optimizada para la velocidad y grandes conjuntos de datos.

Algoritmos codificados en C ++ completamente.

¡Todos los indicadores de progreso optimizados para el máximo rendimiento!

Cree trabajos por lotes para la sincronización automática con o sin GUI.

Centrarse en la usabilidad:

Solo la funcionalidad necesaria en la interfaz de usuario: sin menús sobrecargados o selva de íconos.

Seleccione todas las carpetas mediante arrastrar y soltar.

La última configuración utilizada y la configuración de la pantalla se guardan automáticamente.

Mantenga y cargue diferentes configuraciones arrastrando y soltando, cargando botón o línea de comando.

Haga doble clic para iniciar la aplicación externa (por ejemplo, mostrar archivo en el Explorador de Windows)

Copie y pegue todos los datos de la cuadrícula como texto

Elimine archivos superfluos / temporales directamente en la cuadrícula principal.

Haga clic con el botón derecho en el menú contextual.

Información completa de estado e informes de errores

Ordenar listas de archivos por nombre, tamaño o fecha.

Soporte para archivos de más de 4 GB.

Opción para mover archivos a la Papelera de reciclaje en lugar de eliminarlos / sobrescribirlos.

Ignore los directorios "\ RECYCLER" y "\ System Volume Information" con el filtro predeterminado. (Solo Windows)

Las versiones localizadas están disponibles para muchos idiomas.

Eliminar antes de copiar: evite la escasez de espacio en disco para trabajos de sincronización grandes.

Funcionalidad de filtro para incluir / excluir archivos de la sincronización (¡sin requerir una nueva comparación!).

Incluir / excluir archivos específicos de la sincronización temporalmente.

Maneje automáticamente los cambios de horario de verano en los volúmenes FAT / FAT32.

Versión portátil disponible (seleccionable mediante instalador).

Versión nativa de 64 bits.

Busque actualizaciones desde FreeFileSync automáticamente.

Copie archivos bloqueados con el Servicio de instantáneas de volumen de Windows. (Solo Windows)

Cree copias de seguridad regulares con macros% time%,% date% dentro de los nombres de directorio

Copie los tiempos de creación / acceso / modificación de archivos y carpetas al sincronizar

Estrategia de bloqueo avanzada para permitir múltiples procesos de sincronización (por ejemplo, múltiples escritores, el mismo recurso compartido de red)

Agregaría que puede administrar archivos eliminados, moviéndolos a la Papelera o una carpeta especificada por el usuario. Para señalar una desventaja: la documentación del programa se centra bastante en Windows, menos en Linux. Pero hace su trabajo muy bien.

luri
fuente
3

Puedes usar difuso:

sudo apt-get install diffuse
diffuse file1 file2
metdos
fuente
2
A menudo uso Diffuse para una característica asesina: la capacidad de establecer anclas de fusión manualmente. No hace directorios (todavía), pero para diferencias individuales y desordenadas, la función de anclaje es increíble.
Sk606
2

Puedes probar meld .

Son los repositorios y proporciona una GUI para la comparación de archivos o carpetas.

Pavlos G.
fuente
1
Meld es una GUI para diff, por cierto.
Marco Ceppi
1

Eclipse IDE es un poco pesado si solo está haciendo comparaciones, pero hace un buen trabajo, entre otras cosas. Puede seleccionar 2 proyectos, rutas o archivos y compararlos entre sí, y también sincronizar con servidores de control de origen.

Rog
fuente
1

En mi humilde opinión, FreeFileSync es muy bueno y más útil que Meld. Es rápido y estable, puede realizar sincronizaciones costosas y también puede exportar el resultado de la comparación a un archivo csv.

Enlace Lanchpad

Reza
fuente
0

Las funciones multiplataforma, fáciles, sin complicaciones y de ahorro de perfil hacen de Jfilesync mi mejor opción

Nightcrawler
fuente
0

Para comparar archivos

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Puedes usar el comando cmp:

cmp -b "File_1.txt" "File_2.txt"

la salida sería

a b differ: byte 11, line 2 is  62 2  40  

Para comparar directorios (su necesidad):

puedes usar el comando diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
Maythux
fuente