programa para mac hexadecimales comparar comparador carpetas bindiff archivos file binary compare diff

file - mac - ¿Cómo comparar archivos binarios para verificar si son iguales?



comparar archivos en mac (10)

¿Cuál es la manera más fácil (utilizando una herramienta gráfica o línea de comando en Ubuntu Linux) para saber si dos archivos binarios son iguales o no (excepto las marcas de tiempo)? No necesito extraer la diferencia. Solo necesito saber si son iguales o no.


Prueba diff -s

Respuesta corta: ejecuta diff con el -s .

Respuesta larga: lea a continuación.

Aquí hay un ejemplo. Comencemos creando dos archivos con contenido binario aleatorio:

$ dd if=/dev/random bs=1k count=1 of=test1.bin 1+0 records in 1+0 records out 1024 bytes (1,0 kB, 1,0 KiB) copied, 0,0100332 s, 102 kB/s $ dd if=/dev/random bs=1k count=1 of=test2.bin 1+0 records in 1+0 records out 1024 bytes (1,0 kB, 1,0 KiB) copied, 0,0102889 s, 99,5 kB/s

Ahora hagamos una copia del primer archivo:

$ cp test1.bin copyoftest1.bin

Ahora test1.bin y test2.bin deberían ser diferentes:

$ diff test1.bin test2.bin Binary files test1.bin and test2.bin differ

... y test1.bin y copyoftest1.bin deberían ser idénticos:

$ diff test1.bin copyoftest1.bin

¡Pero espera! ¿Por qué no hay salida?!?

La respuesta es: esto es por diseño. No hay salida en archivos idénticos.

Pero hay diferentes códigos de error:

$ diff test1.bin test2.bin Binary files test1.bin and test2.bin differ $ echo $? 1 $ diff test1.bin copyoftest1.bin $ echo $? 0

Ahora, afortunadamente, no tiene que comprobar los códigos de error todas y cada una de las veces porque puede usar el --report-identical-files -s (o --report-identical-files ) para hacer que diff sea más detallado:

$ diff -s test1.bin copyoftest1.bin Files test1.bin and copyoftest1.bin are identical


Descubrí que Visual Binary Diff era lo que estaba buscando, disponible en:

  • Ubuntu: apt-get install vbindiff
  • Mac OS X: port install vbindiff través de MacPorts .
  • Mac OS X: brew install vbindiff través de Homebrew

Diff con las siguientes opciones haría una comparación binaria para verificar si los archivos son diferentes y se mostraría si los archivos son los mismos:

diff -qs {file1} {file2}

Si está comparando dos archivos con el mismo nombre en diferentes directorios, puede usar este formulario en su lugar:

diff -qs {file1} --to-file={dir2}

OS X El Capitan


La diff Unix estándar mostrará si los archivos son iguales o no:

[me@host ~]$ diff 1.bin 2.bin Binary files 1.bin and 2.bin differ

Si no hay salida del comando, significa que los archivos no tienen diferencias.


Para encontrar defectos en la memoria flash, tuve que escribir este script que muestra todos los bloques 1K que contienen diferencias (no solo el primero como hace cmp -b )

#!/bin/sh f1=testinput.dat f2=testoutput.dat size=$(stat -c%s $f1) i=0 while [ $i -lt $size ]; do if ! r="`cmp -n 1024 -i $i -b $f1 $f2`"; then printf "%8x: %s/n" $i "$r" fi i=$(expr $i + 1024) done

Salida:

2d400: testinput.dat testoutput.dat differ: byte 3, line 1 is 200 M-^@ 240 M- 2dc00: testinput.dat testoutput.dat differ: byte 8, line 1 is 327 M-W 127 W 4d000: testinput.dat testoutput.dat differ: byte 37, line 1 is 270 M-8 260 M-0 4d400: testinput.dat testoutput.dat differ: byte 19, line 1 is 46 & 44 $

Descargo de responsabilidad: pirateé el script en 5 min. No admite argumentos de línea de comandos ni admite espacios en nombres de archivos


Terminé usando hexdump para convertir los archivos binarios a su representación hexadecimal y luego los abrí en meld / kompare / cualquier otra herramienta diff. A diferencia de ti, yo buscaba las diferencias en los archivos.

hexdump tmp/Circle_24.png > tmp/hex1.txt hexdump /tmp/Circle_24.png > tmp/hex2.txt meld tmp/hex1.txt tmp/hex2.txt


Usa sha1 para generar checksum:

sha1 [FILENAME1] sha1 [FILENAME2]


Use el comando cmp . Esto saldrá limpiamente si son binarios iguales, o se imprimirá donde ocurre la primera diferencia y saldrá.



md5 <filename1>

md5 <filename2>

Mira si son lo mismo :-)