首页/系统/Linux 运维命令速查/fdupes 查找重复文件
文件与目录76 条

fdupes 查找重复文件

按内容(大小 + 哈希)找出重复文件,清理冗余数据、节省磁盘空间;衍生版 jdupes/rdfind 更快。

Linux 运维命令速查系统更新于 2026-10-13

fdupes 怎么找重复

fdupes 递归扫描目录,先按文件大小分组,再对同尺寸的文件做内容比对(md5 或 sha 校验)以及逐字节验证,最终把内容完全相同的文件按组列出。它只看内容,不看文件名,所以「同一份文件被复制成十几个名字」这类冗余能被一次找齐。同类的现代替代是 rdfind 与 jdupes,在大目录上更快。

基本信息

适用平台Linux(dnf / apt 安装 fdupes),macOS 可用 Homebrew
语法fdupes [选项] 目录...
判定依据文件大小加内容哈希,最后逐字节确认
替代工具rdfind、jdupes(大目录更快,支持硬链接合并)

典型使用场景

  • 图片、素材仓库里同一张图被复制多次,清理冗余释放空间
  • 迁移目录前先评估有多少重复内容,判断迁移量
  • 排查备份脚本是否把同一份数据重复落地
  • 找出构建产物目录与源码目录中重复的大文件
  • 配合 -S 汇总统计,先出报告再决定是否清理

常用示例

常用示例
fdupes -r /data/photos              # 递归列出重复文件组
fdupes -rS /data                    # 附汇总统计,先看总量
fdupes -r -m /data/photos           # 只统计数量,不逐条列出
fdupes -rd /data/photos             # 交互式删除,每组保留一个
fdupes -r /data/photos > dupes.txt  # 先留证据再决定,推荐做法
fdupes -r -n /data | head -n 50     # 只看前 50 条,抽样确认再批量
rdfind -dryrun true /data/photos    # 大规模目录先用替代工具干跑

选项逐项读法

选项作用使用注意
-r递归子目录不加只扫一层,容易低估重复量
-S显示重复组统计汇总出报告给业务方看时用它
-d删除重复文件,每组保留一个默认保留最先遇到的那个,未必是你要的版本
-N删除时保留第一个文件与 -d 配合,语义比默认更明确
-m只统计不列举判断要不要专项清理时的快速摸底
fdupes -d 的默认保留策略不一定符合预期,尤其当同名文件散落在不同目录时。先导出清单人工确认,或用 jdupes 的硬链接合并(-L)把重复文件替换为链接而不是删除。
fdupes 只比较内容,权限、属主、时间戳的差异不影响判定,因此删除往往连带丢掉正确的权限设置,清理后要检查属主与权限。

易错点

  • 对海量小文件扫描很慢,先用 rdfind 或 jdupes 试算;跳过这一步会让清理任务跑上数小时
  • 在快照、备份目录里删除重复文件会破坏快照结构与增量链,备份数据不要用 fdupes 清理
  • 改成硬链接合并后,任何一方被单独修改都会影响所有链接指向,编辑型目录不适合
  • 删除前不保留清单,事后无法判断当时删掉了哪一份,尤其是同名不同路径的场景

数据来源与参考

  • fdupes 手册(fdupes 项目文档)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌