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 只比较内容,权限、属主、时间戳的差异不影响判定,因此删除往往连带丢掉正确的权限设置,清理后要检查属主与权限。