一款高效的重复文件检查器。扫描一个或多个文件夹,找出内容完全相同的重复文件,在图形界面中分组展示、逐组核对,确认后一键把多余文件移动到指定目录(可恢复)。支持 Windows 和 macOS 双平台。
从双Map过滤算法到安全移动与索引持久化,提供完整的重复文件处理工作流
双 Map 两门过滤算法:大部分文件只查大小、不做内容哈希;需二次确认的文件仅取首尾各 4096 字节做部分哈希,5000 文件量级秒级完成。
每组重复文件一个分区,卡片式图库。图片出缩略图、视频取中间帧;卡片显示完整路径(超长自动换行),大列表渐进渲染 + 异步缩略图加载,滚动流畅不卡顿。
每组默认保留第一个文件、其余自动勾选为删除候选。支持一键切换多种保留策略:先添加目录优先、保留名字短、全部勾选、全部取消、默认保留。
勾选文件移动到移入目录(按原路径结构镜像保存):同盘原子移动、跨盘复制+大小校验后删源;重名自动加 _1/_2 后缀,绝不覆盖原有文件。
移入目录可随时改选并自动记住;已移出文件按镜像路径可手工还原;移入目录自动排除在后续扫描之外,已移出的文件不会再次被标记为重复。
扫描结果与删除动作实时同步到 dup_maps.json,重启程序不丢状态。下次扫描可直接复用已有索引,大幅减少重新扫描时间。
极致高效的去重引擎,5000 文件量级秒级完成扫描
按文件大小建立索引
{大小: 首个文件路径}
只查大小、开销极小
key 写入后永不更新
{大小_哈希: [路径组]}
首尾各 4096 字节部分哈希
列表长度 > 1 即为重复组
按组展开卡片式展示
预览核对 + 勾选策略
一键安全移动多余文件
| 算法名称 | 双 Map 两门过滤(size_map + hash_map) |
| Map1 size_map | {文件大小 → 该大小首个文件的路径}。第一道门过滤,只查大小、无需计算哈希 |
| Map2 hash_map | {size_hash → [完整路径列表]}。第二道门,需计算部分哈希,列表长度 > 1 即为重复组 |
| 哈希策略 | 部分哈希:首尾各 4096 字节合并算 MD5;≤ 8192 字节的小文件整文件哈希 |
从上到下:文件夹管理区、扫描控制与状态栏、勾选策略工具栏、分区图库、底部操作区
上部为文件夹管理区和扫描控制,中部为勾选策略工具栏,主体为分组卡片图库展示重复文件,底部为移入目录选择与删除操作区
从添加文件夹到移动多余文件,全流程清晰明确
启动程序,添加待检查的文件夹(可添加多个)
点击"开始扫描",后台线程执行,界面不卡顿
按分区浏览重复组,双击卡片可放大预览核对内容
用工具栏切换保留策略或手动单击卡片勾选/取消
检查移入目录路径(可改选),已选目录自动排除在扫描外
确认后自动移动文件并更新索引,移入目录中可手动还原
打包版无需 Python 环境,下载即可运行
也可以从源码运行:需要 Python 3.10+,执行 pip install pillow opencv-python numpy 后运行 python scan_dups.py --gui
程序产生的数据文件及存放位置说明
扫描索引文件,包含 size_map 和 hash_map 数据。删除动作实时同步,重启程序不丢状态。
界面设置文件,保存当前移入目录等偏好设置,下次启动自动恢复。
默认移入目录,已移出文件按原路径结构镜像存放(如 E:\Camera\IMG.jpg → removed\E\Camera\IMG.jpg)。
双 Map 算法 + 安全移动机制,让文件清理无忧无虑
双Map两门过滤算法
首尾各取 4096 字节
核心算法17项 + GUI逻辑90项
Windows + macOS 双平台
扫描、去重、移动、恢复等常见问题解答
文件滤重是一款重复文件检查清理工具。扫描一个或多个文件夹,通过双 Map 两门过滤算法找出内容完全相同的重复文件,在图形界面中分组展示,支持一键把多余文件移动到指定目录(可恢复)。支持 Windows 和 macOS 双平台。
可以。文件被移动到移入目录时会按原路径结构镜像保存。需要恢复时,按文件在移入目录中的镜像路径(盘符+完整目录)手工拷回原位即可。移入目录可随时改选,已移出文件不会丢失。
opencv 未安装或取帧失败导致。源码运行时请 pip install opencv-python;打包版已内置 opencv,正常情况下可直接显示视频中间帧缩略图。
这是 ad-hoc 签名未通过 Apple 公证的正常现象。解决方法:右键点 app → 打开 → 再点"打开"即可。也可以运行 xattr -dr com.apple.quarantine 文件滤重.app 清除隔离属性。
macOS 版数据固定存放在 ~/Library/Application Support/FileDedup/(含 dup_maps.json、settings.json、removed 移入目录)。与 app 所在位置无关,卸载时删除该目录即可清掉全部数据。Windows 版数据位于程序所在目录。
正常情况下移入目录已在排除集合中。若此前用旧版本移入过其他目录,重新选择一次该目录即可自动加入排除列表,已移出的文件不会再次被标记为重复。