📅  最后修改于: 2023-12-03 15:38:19.865000             🧑  作者: Mango
在使用Linux系统时,由于相同文件的存在和不断复制,可能会产生大量的重复文件。这些文件占用了宝贵的存储空间,也会使文件管理和维护工作变得繁琐。因此,找到和删除这些重复文件非常必要。
基于文件名查找重复文件是一种简单而快速的方法。通过使用find命令,我们可以轻松地查找指定目录中的相同文件名。
$ find /path/to/directory -type f -not -empty -printf '%s\n' | sort -rn | uniq -d | xargs -I{} -n1 find /path/to/directory -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
这个命令使用了几个其他命令。让我们逐步解释每个命令的作用:
find /path/to/directory
-type f -not -empty -printf '%s\n'` :查找目录中所有非空文件,并按大小排序输出。sort -rn
:将输出结果按文件大小的倒序排序。uniq -d
:查找输出结果中重复的文件大小。xargs -I{} -n1 find /path/to/directory -type f -size {}c -print0
:查找指定目录中指定大小(与前面的输出结果匹配)的文件,并按文件名列表输出。xargs -0 md5sum
:计算MD5散列值以找到重复的文件。sort | uniq -w32 --all-repeated=separate
:通过比较计算的MD5散列来找到重复文件,这个命令将输出所有重复的文件,每组一个新的行。另一种查找重复文件的方法是基于文件内容(散列值)的查找。使用基于文件内容查找重复文件时,供选中常使用的命令是fdupes。
$ fdupes -r /path/to/directory
这个命令可以查找指定目录中的所有重复文件。使用 -r
表示对子目录进行递归操作。
如果只是基于文件名查找到了重复文件,那么可以手动删除它们或使用以下命令:
$ find /path/to/directory -type f -not -empty -printf '%s\n' | sort -rn | uniq -d | xargs -I{} -n1 find /path/to/directory -type f -size {}c -print0 | xargs -0 rm -v
这个命令的解释与查找相同,只不过最后用 rm -v
代替了 md5sum
。
使用fdupes查找到的重复文件可以使用以下命令删除:
$ fdupes -rd /path/to/directory
如果你不想手动确认每个文件的删除,可以添加 -d
选项来自动删除重复文件。
总之,在Linux上查找和删除重复文件是一项必要的任务。通过应用上面列出的方法,可以更高效地执行这些任务,以提高工作效率并为系统腾出更多的空间!