![如何比较两个文件的内容?](https://linux22.com/image/1383654/%E5%A6%82%E4%BD%95%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%9F.png)
我接到一个任务,要比较数百对文件的内容。我必须快速比较每对文件,并给出答案,看它们是否相等(内容上)。这些文件可能是文本文件或二进制文件。你能帮我吗?
- 我正在寻找一个适用于所有 UNIX \ Linux 版本的命令
- 我更喜欢使用最有效的命令(就时间和性能而言)
- 我更喜欢支持文本和二进制文件的命令
- 我更喜欢作为操作系统的一部分安装的命令(而不是第三方)
谢谢你!
答案1
如果您只需要知道文件是否不同,请使用cmp
。或者更准确地说:
if cmp "$FILE1" "$FILE2"; then
echo same
else
echo different
fi
(或者当它们相等/不相等时您需要执行的任何操作)。cmp
应该存在于任何类似 posix 的系统上,适用于二进制和文本文件,并在发现差异时立即返回,这大概是您将获得的最快速度。(此外,由于它不具备行感知能力,因此它不会浪费时间查找行尾。)
答案2
diff
命令应该可以完成这项工作。使用它和-q
选项可以仅打印内容不同的文件名。
diff -q file1 file2
如果要将整个文件放在一对目录中,请添加-r
选项
diff -r -q dir1 dir2
请参阅文档以获取更多详细信息,请键入man diff