如何比较目录与二进制文件

如何比较目录与二进制文件

我想将目录与二进制文件进行比较。实际上,我对文件之间的实际差异不感兴趣,而是想知道是否存在差异(以及哪些文件不同)。以前我使用过meld,但它不能比较二进制文件。

什么这样的文件比较工具可以做到这一点?

笔记:它是图形工具还是只有命令行并不重要。

答案1

这可以很容易地用 来完成diff。例如:

$ 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

在上面的示例中,foo/bar/目录包含二进制文件,并且bash2仅以foo/.

因此,您可以运行一些简单的操作,例如:

$ diff bar/ foo/ && echo "The directories' contents are identical"

这将显示不同的文件(如果有),或者打印“目录内容相同”(如果有)。要比较子目录及其可能包含的任何文件,请使用diff -r.将其与-q抑制文本文件的输出相结合。

答案2

cmp您可以使用命令比较两个文件

用法:

cmp file1 file2

它将给出字节数差异和行号

答案3

完整的比较,显示相同、不同以及仅在一个或另一个文件夹或子文件夹中:

diff -rqs bar/ foo/

(您将获得每个文件的一些输出,不需要“目录相同”)

相关内容