Shell脚本 - 如何比较不同dat的相同文件

时间:2012-08-31 07:47:48

标签: linux shell

我在目录中有数百个文件,文件名是日期,如下所示。 我如何比较不同日期的相同文件。

前:

/test/
xyz-my_S1logfile.Aug.25.gz  
bhd-my_S1logfile.Aug.30.gz
ddddf-my_S2logfie.Aug.25.gz
zsed-my_S2logfie.Aug.30.gz

Compare the size of xyz-my_S1logfile.Aug.25.gz and bhd-my_S1logfile.Aug.30.gz
ddddf-my_S2logfie.Aug.25.gz and zsed-my_S2logfie.Aug.30.gz
.....

1 个答案:

答案 0 :(得分:1)

除非我误解了您的问题,否则您希望在目录中找到包含重复内容的文件。这样做的标准方法是为每个文件的内容生成一个强哈希。例如。对于SHA256,您可以使用sha256sum工具:

sha256sum /my/dir/* > sha256sums.txt

或更好:

find /my/dir -type f -print0 | xargs -r0 sha256sum > sha256sums.txt

考虑到尚未找到任何SHA-2变体的冲突,您可以合理地确信具有相同散列的任何文件都是相同的。然后,您可以使用sortuniq查找重复的哈希值,每个哈希值都有一个出现次数:

cat sha256sums.txt | sort | cut -b -32 | uniq -cd | sort -nr

然后,您可以为相应的文件列表中的每个重复哈希值grep sha256sums.txt文件。

或者,如果您想要自动化工具,可以尝试FsLintsupports finding duplicate files