知道两个二进制文件是否相同(除了时间戳)最简单的方法是什么(在Ubuntu Linux上使用图形工具或命令行)?我不需要提取差值。我只需要知道它们是否相同。


当前回答

Radiff2是一个用来比较二进制文件的工具 常规diff比较文本文件。

尝试raddiff2,它是radare2反汇编程序的一部分。例如,使用以下命令:

radiff2 -x file1.bin file2.bin

您将得到非常格式化的两列输出,其中突出显示了差异。

其他回答

有一种相对简单的方法来检查两个二进制文件是否相同。

如果你在编程语言中使用文件输入/输出;您可以将这两个二进制文件的每一位存储到它们自己的数组中。

在这一点上,检查非常简单:

if(file1 != file2){
    //do this
}else{
    /do that
}

我最终使用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

Radiff2是一个用来比较二进制文件的工具 常规diff比较文本文件。

尝试raddiff2,它是radare2反汇编程序的一部分。例如,使用以下命令:

radiff2 -x file1.bin file2.bin

您将得到非常格式化的两列输出,其中突出显示了差异。

带有以下选项的Diff将进行二进制比较,以检查文件是否完全不同,如果文件相同,则输出:

diff -qs {file1} {file2}

如果你在比较两个不同目录下同名的文件,你可以使用这种形式:

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

OS X船长

我最喜欢的使用xxd十六进制转储从vim包:

1)使用vimdiff (vim的一部分)

#!/bin/bash
FILE1="$1"
FILE2="$2"
vimdiff <( xxd "$FILE1" ) <( xxd "$FILE2" )

2)使用diff

#!/bin/bash
FILE1=$1
FILE2=$2
diff -W 140 -y <( xxd $FILE1 ) <( xxd $FILE2 ) | colordiff | less -R -p '  \|  '