比较 2 个文件

比较 2 个文件

我需要通过脚本来比较两个文件的内容,如果内容不同,则执行另一个脚本,但是内容相同则不执行任何操作。我尝试过使用 DIFF 命令,但似乎无法让它工作。谁能提供一种简单的方法来执行此任务?

答案1

您可以使用diffcmp。对于直接比较,我更喜欢cmp

cmp -s "$file1" "$file2" || otherscript.sh

答案2

diff file1 file2将完全完成您所要求的任务(尽管我怀疑您实际上正在尝试完成比您所描述的更高级的事情)。diff如果它们的文件相同,将返回 0 退出状态;如果它们不同,则返回非零退出状态。如果在脚本中使用它,您可能希望重定向输出,这样它就不会打印出差异。

if ! diff "$file1" "$file2" > /dev/null; then
    # test evaluated to False (1), so the files are different
    bash otherscript.sh
fi

答案3

使用哈希代替:

HASH_VALUE_1=$(sha1sum file1 | cut -c 1-40)
HASH_VALUE_2=$(sha1sum file2 | cut -c 1-40)
if [[ "$HASH_VALUE_1" == "$HASH_VALUE_2" ]]
then
    # your code
else
    # your code
fi

上面是针对 bash 编写的。

答案4

如果您想比较文本文件,并排选项对于显示差异非常有用。使用

diff -y -a <filea> <fileb> 

然后(-y 表示 ascii 文件)。

如果您只需要知道文件的任何字节(二进制)是否不同,那么使用

diff -q <file1> <file2> 

无论如何,如果文件相同,则 diff 返回 0。

相关内容