如何比较两个文件的内容?

如何比较两个文件的内容?

我接到一个任务,要比较数百对文件的内容。我必须快速比较每对文件,并给出答案,看它们是否相等(内容上)。这些文件可能是文本文件或二进制文件。你能帮我吗?

  1. 我正在寻找一个适用于所有 UNIX \ Linux 版本的命令
  2. 我更喜欢使用最有效的命令(就时间和性能而言)
  3. 我更喜欢支持文本和二进制文件的命令
  4. 我更喜欢作为操作系统的一部分安装的命令(而不是第三方)

谢谢你!

答案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

相关内容