Joe*_*Joe 161
标准unix diff将显示文件是否相同:
[me@host ~]$ diff 1.bin 2.bin
Binary files 1.bin and 2.bin differ
Run Code Online (Sandbox Code Playgroud)
如果命令没有输出,则表示文件没有差异.
小智 94
使用cmp命令.如果它们是二进制相等的,它将干净地退出,或者它将打印出第一个差异发生的位置并退出.
sha*_*.lo 82
我发现Visual Binary Diff是我想要的,可用于:
__CODE____CODE____CODE__通过MacPorts.__CODE__通过HomebrewSco*_*ell 16
使用sha1生成校验和:
sha1 [FILENAME1]
sha1 [FILENAME2]
Run Code Online (Sandbox Code Playgroud)
sim*_*tek 11
我最终使用hexdump将二进制文件转换为十六进制表示,然后在meld/kompare /任何其他diff工具中打开它们.与你不同,我是在文件的差异之后.
hexdump tmp/Circle_24.png > tmp/hex1.txt
hexdump /tmp/Circle_24.png > tmp/hex2.txt
meld tmp/hex1.txt tmp/hex2.txt
Run Code Online (Sandbox Code Playgroud)
简短的回答:diff用-s开关运行。
长答案:请继续阅读下文。
这是一个例子。让我们首先创建两个具有随机二进制内容的文件:
$ 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
Run Code Online (Sandbox Code Playgroud)
现在让我们复制第一个文件:
$ cp test1.bin copyoftest1.bin
Run Code Online (Sandbox Code Playgroud)
现在 test1.bin 和 test2.bin 应该不同:
$ diff test1.bin test2.bin
Binary files test1.bin and test2.bin differ
Run Code Online (Sandbox Code Playgroud)
...并且 test1.bin 和 copyoftest1.bin 应该相同:
$ diff test1.bin copyoftest1.bin
Run Code Online (Sandbox Code Playgroud)
可是等等!为什么没有输出?!?
答案是:这是设计使然。相同的文件没有输出。
但有不同的错误代码:
$ diff test1.bin test2.bin
Binary files test1.bin and test2.bin differ
$ echo $?
1
$ diff test1.bin copyoftest1.bin
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
现在幸运的是,您不必每次都检查错误代码,因为您可以使用-s(或--report-identical-files) 开关来使 diff 更详细:
$ diff -s test1.bin copyoftest1.bin
Files test1.bin and copyoftest1.bin are identical
Run Code Online (Sandbox Code Playgroud)
具有以下选项的 Diff 将进行二进制比较,以检查文件是否完全不同,并输出文件是否相同:
diff -qs {file1} {file2}
Run Code Online (Sandbox Code Playgroud)
如果要比较不同目录中具有相同名称的两个文件,可以使用以下形式:
diff -qs {file1} --to-file={dir2}
Run Code Online (Sandbox Code Playgroud)
OS X 埃尔卡皮坦
__CODE__
__CODE__
看看它们是否相同:-)