
Me gustaría comparar directorios con archivos binarios. En realidad, no estoy interesado en cuáles son las diferencias reales entre archivos, sino en saber si hay una diferencia (y qué archivos difieren). Anteriormente usaba meld
, pero no puede comparar archivos binarios.
¿Qué herramienta de comparación de archivos puede hacer esto?
NOTA:No importa si es una herramienta gráfica o simplemente tiene una línea de comandos.
Respuesta1
Esto se puede hacer fácilmente con diff
. Por ejemplo:
$ ls -l foo/
total 2132
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash2
-rwxr-xr-x 1 terdon terdon 118280 Nov 18 13:13 ls
$ ls -l bar/
total 1124
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:14 bash
-rwxr-xr-x 1 terdon terdon 118280 Nov 18 13:14 ls
$ diff bar/ foo/
Only in foo/: bash2
En el ejemplo anterior, los directorios foo/
y bar/
contienen archivos binarios y bash2
solo están en formato foo/
.
Entonces, podrías ejecutar algo simple como:
$ diff bar/ foo/ && echo "The directories' contents are identical"
Eso le mostrará los diferentes archivos, si los hay, o imprimirá "El contenido de los directorios es idéntico" si lo son. Para comparar subdirectorios y cualquier archivo que puedan contener, utilice diff -r
. Combínelo con -q
para suprimir la salida de archivos de texto.
Respuesta2
Puedes comparar dos archivos usando cmp
el comando
uso:
cmp file1 file2
Le dará el número de bytes de diferencia y el número de línea.
Respuesta3
Una comparativa completa, mostrando idénticos, diferentes y sólo en una u otra carpeta o subcarpetas:
diff -rqs bar/ foo/
(Obtendrá algunos resultados para cada archivo, no es necesario que los 'directorios sean idénticos')