BASH:检查目录中的文件是否重复?

时间:2013-11-21 20:44:15

标签: linux bash scripting duplicates

我正在编写一个内务管理脚本,并且在我要清理的目录中包含文件。 我想将文件从源目录移动到另一个目录,有许多子目录,因此可能存在相同的文件。我想要做的是使用CMP命令或MD5sum每个文件,如果它们没有重复,则移动它们,如果它们是相同的只移动1。

所以我让移动部分正常工作如下:

find /path/to/source -name "IMAGE_*.JPG" -exec mv '{}' /path/to/destination \;

我假设我必须遍历我的目录,所以我在想。

用于/ path / to / source中的文件 做 if -name“IMAGE _ *。JPG” 然后 md5sum(或cmp)$文件 ...卡在这里(我担心这种方法如何能够将所有文件与彼此进行比较以及如何将它们过滤掉)... 然后就完成了mv。

提前致谢。

3 个答案:

答案 0 :(得分:4)

find . -type f -exec md5sum {} \; | sort | uniq -d

那会吐出所有重复的md5哈希值。那么只需要确定哪些文件产生了那些重复的哈希值。

答案 1 :(得分:3)

有一个专为此目的而设计的工具,它是fdupes

  fdupes -r dir/

答案 2 :(得分:0)

dupmerge是另一个这样的工具......