我想将目录与二进制文件进行比较。实际上,我对文件之间的实际差异不感兴趣,而是想知道是否存在差异(以及哪些文件不同)。以前我使用过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/
(您将获得每个文件的一些输出,不需要“目录相同”)