Linux下可用fdupes、rdfind或find+md5sum精准清理重复文件:fdupes交互式删除需加-N确认;rdfind自动保留最早文件;find+md5sum零依赖但慢,大文件需跳过。

磁盘空间莫名其妙变少,明明没装几个大软件,却总提示“空间不足”,大概率是大量内容完全相同的重复文件在悄悄占地方——比如同一份安装包下载了三次、网盘同步产生的冲突副本、素材解压后忘了删原压缩包。Linux下不靠肉眼,得用命令精准揪出这些冗余文件。
用fdupes快速扫描并交互式删除
fdupes是最轻量、最直观的重复文件查找工具,按内容哈希比对,不是只看文件名或大小。
先安装:sudo apt-get install fdupes(Debian/Ubuntu);sudo dnf install fdupes(Fedora);sudo yum install fdupes(CentOS/RHEL)。
扫描指定目录:fdupes -r /home/user/Documents。-r 表示递归进入子目录,缺了它只会查当前层。
看到一堆重复文件列表后,加 -d 选项进入交互式删除模式:fdupes -rd /home/user/Documents。它会把每组重复文件列出来,让你手动选保留哪一份,其余全部删掉。
【必须加 -N 参数确认删除动作】 直接运行 fdupes -rd 会跳过确认直接删,一旦选错就不可逆。正确写法是 fdupes -rdN /home/user/Documents,这样每删一组前都会停住问你“保留哪一个?[1-3]”。
用rdfind做静默批量处理
适合已验证过目标目录、需要全自动清理的场景,比如定时任务里跑一次去重。
安装:sudo apt-get install rdfind(其他发行版对应换为 dnf/yum)。
先试运行,只列出不删:rdfind -dryrun true /mnt/backup。输出会生成 RESULTS.TXT,打开就能核对哪些是真重复、哪些是误判。
确认无误后执行删除:rdfind -deleteduplicates true /mnt/backup。rdfind 会自动识别原始文件(最早修改时间那个),只删副本,不会动“第一份”。
这一步不能倒过来——先删再看报告。因为删除后 RESULTS.TXT 里记录的是删除前的状态,和实际磁盘已不一致。
用find+md5sum组合实现零依赖排查
系统没装任何额外工具?连 fdupes 和 rdfind 都不能用?那就用 find + md5sum 手搓一个临时方案,全程只依赖 bash 和 coreutils。
方法一:一行命令列出所有重复项(仅显示哈希与路径):
find /tmp/test -type f -exec md5sum {} \; | sort | uniq -w32 -d
方法二:生成可读性更强的分组清单(推荐):
find /tmp/test -type f -print0 | xargs -0 md5sum | sort | awk '{if ($1 == prev) {print $0; print prev_line} else {prev = $1; prev_line = $0}}'
注意:md5sum 对超大文件(如几十GB视频)会明显变慢,且占用内存高。如果目录里有单个大于10GB的文件,建议先用 find -size +1G 跳过它们再跑哈希。
安全删除前必须做的三件事
第一步:用 df -h 确认目标分区还有多少可用空间,避免清理中途因磁盘满导致命令崩溃或日志写入失败。
第二步:用 ls -lt 检查重复文件的修改时间,人工判断哪份更可能是原始文件——比如“report_final_v3.pdf”比“report.pdf”新,但内容一样,那就要留 v3 删旧的。
第三步:对关键目录(如 /home/username/Pictures 或 /var/www)先复制一份路径到文本文件,执行删除前再用 ls -la 核对一遍文件权限和属主,防止误删 root 权限的配置文件。
执行完 fdupes -rdN /path 或 rdfind -deleteduplicates true /path 后立即退出终端。


















