我发现以下命令使用 md5 文件哈希来查找重复文件并将它们列出在文本文件中。
find ./ -type f -exec md5 {} \; | awk -F '=' '{print $2 "\t" $1}' | sort | tee duplicates.txt
但是,由于列出了具有相同哈希的每个文件,因此我无法使用以下命令删除重复文件,因为文本文件中的每一行都将被删除,包括原始文件。
while read file; do rm "$file"; done < duplicates.txt
有没有办法在duplicates.txt 文件中删除除第一个具有重复md5 哈希的文件之外的所有文件?
fdupes
可能是您的解决方案。它可以通过自制软件安装如果你没有自制软件,你可以安装自制软件
您可以使用该
-d
选项来提示要保留哪些文件(删除所有其他文件),该-N
选项将删除除第一个之外的所有文件而不提示。-r
递归搜索指定的目录。所以
fdupes -rdN <directory>
应该删除每组重复项中除第一个之外的所有内容。当然,在没有提示的情况下删除时要小心。如果文件很重要,也许先复制目录。很抱歉建议使用第三方工具;我通常会尝试找到一种无需额外软件即可完成工作的方法,但 fdupes 是我知道的唯一方法。我会想办法将您的 md5 列表用于相同目的。