diff命令比较 - linux diff工具



告诉Unix/Linux中两个文件是否相同的最快方法? (4)

也尝试使用cksum命令:

chk1=`cksum <file1> | awk -F" " '{print $1}'`
chk2=`cksum <file2> | awk -F" " '{print $1}'`

if [ $chk1 -eq $chk2 ]
then
  echo "File is identical"
else
  echo "File is not identical"
fi

cksum命令将输出文件的字节数。 参见'man cksum'。

我有一个shell脚本,我需要检查两个文件是否相同。 我为大量文件做了这个工作,在我的脚本中diff命令似乎是性能瓶颈。

这里是行:

diff -q $dst $new > /dev/null

if ($status) then ...

有没有更快的方法来比较文件,也许是一个自定义的算法,而不是默认的diff


Answer #1

你为什么不获得这两个文件内容的散列?

尝试使用此脚本,将其称为例如script.sh,然后按如下所示运行它:script.sh file1.txt file2.txt

#!/bin/bash

file1=`md5 $1`
file2=`md5 $2`

if [ "$file1" = "$file2" ]
then
    echo "Files have the same content"
else
    echo "Files have NOT the same content"
fi

Answer #2

我喜欢@Alex Howansky为此使用了'cmp --silent'。 但我需要积极和消极的反应,所以我使用:

cmp --silent file1 file2 && echo '### SUCCESS: Files Are Identical! ###' || echo '### WARNING: Files Are Different! ###'

然后,我可以在终端或ssh中运行此命令,以检查文件是否存在常量文件。


Answer #3

我相信cmp会停止在第一个字节的区别:

cmp --silent $old $new || echo "files are different"




diff