使用 MD5 删除 MacOS 终端上的重复文件

使用 MD5 删除 MacOS 终端上的重复文件

我发现以下命令利用 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 哈希值的文件?

答案1

fdupes可能是您的解决方案。它可以通过以下方式安装自制

brew install fdupes

如果你没有 homebrew,你可以使用以下命令安装 homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

您可以使用该-d选项来提示保留哪些文件(删除所有其他文件),并且该-N选项会在没有提示的情况下删除除第一个文件之外的所有文件。-r递归搜索指定的目录。

因此,fdupes -rdN <directory>应该删除每组重复项中除第一个之外的所有内容。当然,在未经提示的情况下删除时要小心。如果文件很重要,也许可以先复制目录。

很抱歉建议使用第三方工具;我通常会尝试找到一种无需额外软件就能完成任务的方法,但 fdupes 是我所知道的唯一方法。我会想办法使用您的 md5 列表来实现相同的目的。

相关内容