如何使用fdupes删除重复文件?

当我运行fdupes它会找到超过30,000个重复文件。 我需要保留一个文件并删除所有其他重复项(因为其中一些是systemfiles)。 请给我一个命令或脚本来执行此操作,而不必为每组重复文件按“1或2或全部”。

如果你想静静地运行它,你可以这样做(我刚刚使用它来清除在机架空间块存储上运行的150 GB的欺骗行为。£kerching !!)

 fdupes -rdN dir/ r - recursive d - preserver first file, delete other dupes N - run silently (no prompt) 

fdupes有一个丰富的CLI:

 fdupes -r ./stuff > dupes.txt 

然后,删除重复项就像检查dupes.txt和删除有问题的目录一样简单。 fdupes还可以提示您删除重复项。

 fdupes -r /home/user > /home/user/duplicate.txt 

命令输出为duplicate.txt

fdupes将比较文件的大小和MD5哈希值以查找重复项。

有关详细的使用信息,请查看fdupes联机帮助页 。

我已经使用了fslint和DupeGuru很长一段时间了。

  • FSlint支持通过通配符和其他清理方法进行选择
  • DupeGuru支持正则表达式

两者都可以处理> 10000个文件/文件夹

我会用这种更安全的方式:

创建脚本并将复制的文件移动到新文件夹。 如果移动到原始文件夹之外的文件夹,fdupes将不会在第二次扫描时报告重复的文件,并且删除它们会更安全。

 #!/bin/bash # Save default separator definitions oIFS=$IFS # define new line as a separator, filenames can have spaces IFS=$'\n'; # For each file (f) listed as duplicated by fdupes, recursively for f in `fdupes -r -f .` do # Log the files I'm moving echo "Moving $f to folder Duplicates" >> ~/log.txt # Move the duplicated file, keeping the original in the original folder mv $f Duplicates/ done # restore default separator definitions IFS=$oIFS