统一的电脑文件管理工具,支持垃圾清理、文档分类、重复检测、自动备份和操作回撤。文件查找使用系统 find 命令即可,无需额外脚本。
跨平台原生支持: macOS / Linux / Windows(Python 3.6+,仅需标准库 + send2trash)
send2trash(用于回收站操作): pip install send2trash脚本功能状态scripts/scan_cleanup.py扫描垃圾文件生成清理建议清单只读scripts/classify_files.py文件分类方案预览(不执行移动)只读scripts/find_duplicates.py基于内容的重复文件检测只读scripts/incremental_backup.py增量/全量文件夹备份写入scripts/move_with_log.py带操作日志的文件移动/删除写入scripts/rollback.py操作回撤工具写入
/、 C:\、 /System、 AppData、 Library、 ~/.config)rm -rf、 del /S /Q、 shutil.rmtree() 或宽泛通配符( *.tmp、 *.log)作用于上述目录先扫描,后操作——所有操作先生成预览方案/清单,用户确认后再执行
操作日志记录——所有移动/删除操作必须通过 scripts/move_with_log.py 执行,自动记录操作日志
系统目录保护——以下目录默认加入保护白名单,禁止任何写入操作:
/System、 /Library、 /usr、 /bin、 /sbin、 ~/.configC:\Windows、 C:\Program Files、 C:\Program Files (x86)、 %USERPROFILE%\AppDataTrash 优先——删除操作使用 send2trash 库(跨平台统一回收站)
小批量执行——每次最多操作 10 个文件,逐批确认
结果报告——每项操作完成后输出清晰的结果报告(数量、路径、状态统计)+ 回撤指引
所有文件移动/删除操作必须通过 scripts/move_with_log.py 执行,该脚本会自动记录 JSONL 格式操作日志:
bash
# 移动文件(自动记录日志)
python3 scripts/move_with_log.py move <源文件> <目标路径> [--log-dir <日志目录>]
# 移到回收站(自动记录日志)
python3 scripts/move_with_log.py trash <文件> [--log-dir <日志目录>]
# 批量移动(文件列表格式:每行 source -> dest)
python3 scripts/move_with_log.py batch-move --files <文件列表路径> [--log-dir <日志目录>]
日志目录按平台自动选择:
~/Library/Caches/file_manager/logs/~/.cache/file_manager/logs/(或 $XDG_CACHE_HOME)%LOCALAPPDATA%/file_manager/logs/日志格式(JSON Lines,路径含特殊字符时自动转义):
json
{"action":"move","source":"/Users/xxx/Downloads/file.pdf","dest":"/Users/xxx/Downloads/文档/file.pdf","timestamp":"2026-04-03T00:30:00Z","status":"ok"}
{"action":"trash","source":"/Users/xxx/Downloads/old.dmg","dest":"trash","timestamp":"2026-04-03T00:30:01Z","status":"ok"}
操作完成后,必须在结果报告末尾附上 回撤指引:
text
↩️ 如操作有误,可回复以下指令回撤:
- 「撤销本次所有操作」— 一键恢复所有文件到原位置
- 「撤销 <文件名>」— 单独恢复某个文件到原位置
用户意图模块说明清理垃圾/临时文件模块1:垃圾清理先扫描生成建议清单整理/分类文档模块2:文档分类先输出分类方案预览查找/删除重复文件模块3:重复检测内容级去重备份文件夹模块4:自动备份支持增量备份撤销之前操作模块5:操作回撤支持一键撤销或按文件撤销
清理下载目录、临时文件、重复文件或长期未使用文件。
bash
python3 scripts/scan_cleanup.py <目标目录> [--days 90] [--min-size 100] [--installers] [--cache] [--max-depth N] [--max-files N]
参数说明默认值--days N超过 N 天未修改才列入90--min-size N大文件最小 MB100--installers同时扫描安装包关--cache同时扫描缓存目录关--max-depth N最大扫描深度无限--max-files N最大扫描文件数50000
~/Downloads).dmg、 .exe、 .msi、 .pkg、 .deb、 .rpm)scripts/scan_cleanup.py 执行扫描move_with_log.py trash 执行清理text
🗑️ 清理建议清单(共 N 项,预计释放 X MB)
| # | 文件路径 | 大小 | 最后修改 | 建议 |
|---|---------|------|---------|------|
| 1 | ~/Downloads/installer.dmg | 256MB | 2025-01-15 | 删除 |
| 2 | ~/Downloads/old-report.pdf | 45MB | 2025-10-01 | 保留 |
请确认要清理的文件编号(如:1,3,5 或 全部):
按项目、时间、文件类型或主题重新整理文档。
bash
python3 scripts/classify_files.py <目标目录> [--by type|project|date] [--depth N] [--max-files N]
参数说明默认值--by type|project|date分类方式type--depth N扫描深度1--max-files N最大扫描文件数50000
scripts/classify_files.py 扫描并生成分类方案预览move_with_log.py move 逐个移动文件text
📂 分类方案预览
目标目录:~/Documents
分类方式:type
├── 📄 分类方案:
│ 📁 图片/ (23个文件, 156.3MB)
│ 📁 文档/ (45个文件, 12.8MB)
│ 📁 代码/ (12个文件, 2.1MB)
│
├── 📊 合计: 80 个文件, 171.2 MB
│
请确认是否按此方案整理?(确认/取消/修改)
快速定位目标文件。
os.walk()text
🔍 搜索结果(共 N 个文件)
| # | 文件名 | 路径 | 大小 | 修改时间 | 类型 |
|---|-------|------|------|---------|------|
| 1 | report.pdf | ~/Documents/work/ | 2.3MB | 2026-03-15 | PDF |
需要打开或操作哪个文件?
清理磁盘内内容相同的冗余文件。
bash
python3 scripts/find_duplicates.py <目标目录> [--min-size 1] [--exclude .git] [--max-depth 20] [--max-files 50000]
参数说明默认值--min-size N最小文件大小 KB1--exclude <dir>排除目录(可多次)无--max-depth N最大搜索深度20--max-files N最大扫描文件数50000
move_with_log.py trash 删除重复文件text
🔁 重复文件检测报告
重复组 1 (共 3 个文件, 5.2MB):
✅ 保留: ~/Documents/photo.jpg (最新, 2026-03-20)
❌ 重复: ~/Downloads/photo_copy.jpg (2026-02-15)
❌ 重复: ~/Desktop/photo_backup.jpg (2026-01-10)
📊 共发现 N 组重复文件,预计可释放 X MB
保护工作文档、项目资料等重要文件。
bash
python3 scripts/incremental_backup.py <源目录> <备份目标路径> [--full] [--exclude <glob>] [--no-verify] [--quiet] [--max-files N] [--max-depth N]
参数说明默认值--full执行全量备份增量--exclude <glob>排除匹配的文件/目录(可多次)无--no-verify跳过备份后校验校验--quiet静默模式有进度--max-files N最大备份文件数50000--max-depth N最大扫描深度20
--full 时,复制全部文件<备份目标路径>/<日期>/原路径--max-files 上限时立即报错退出--max-depth 限制扫描深度text
✅ 备份完成报告
源目录:~/Documents/project
备份至:~/Backup/project/2026-04-03/
模式:增量备份
新增文件:12 个 (15.3 MB)
跳过文件:45 个(无修改)
校验:✅ 通过
备份耗时:3.2 秒
撤销之前执行的文件整理/清理/移动操作,恢复文件到原位置。
bash
# 查看可用日志
python3 scripts/rollback.py list-logs [--log-dir <日志目录>]
# 查看日志详情
python3 scripts/rollback.py show --log <日志文件路径>
# 一键撤销所有操作
python3 scripts/rollback.py rollback-all --log <日志文件路径>
# 撤销单个文件
python3 scripts/rollback.py rollback-single --log <日志文件路径> --file <原文件路径>
# 按范围撤销
python3 scripts/rollback.py rollback-range --log <日志文件路径> --from <起始行号> --to <结束行号>
读取操作日志(JSONL 格式),安全解析每条操作记录
逆序执行 反向操作:
move 操作 → 将文件从目标路径移回原路径trash 操作 → 将文件从回收站移回原路径(支持模糊匹配回收站重命名)自动跳过已失败的原始操作和已存在的文件
撤销完成后 递归向上 清理因撤销而变空的目录
text
↩️ 开始撤销日志中的所有操作...
日志: ~/.cache/file_manager/logs/operations_20260403.jsonl
✅ 恢复: ~/Downloads/文档/report.pdf -> ~/Downloads/report.pdf
✅ 恢复: ~/Downloads/图片/photo.png -> ~/Downloads/photo.png
⏭️ 跳过: ~/Downloads/图片/screenshot.png (原位置已有文件)
✅ 恢复: 回收站/old.dmg -> ~/Downloads/old.dmg
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 撤销完成: 成功 3 | 跳过 1 | 失败 0 | 总计 4
🧹 检查并清理因撤销而变空的自动创建文件夹...
🗑️ 已清理空目录: ~/Downloads/文档
组件实现语言Python 3.6+文件操作os / shutil(标准库)哈希计算hashlib(标准库)回收站send2trash(跨平台)日志格式JSON Lines( json 标准库)路径处理os.path(自动适配平台分隔符)
用途macOSLinuxWindows日志目录~/Library/Caches/file_manager/logs/``~/.cache/file_manager/logs/``%LOCALAPPDATA%/file_manager/logs/下载目录~/Downloads``~/Downloads``%USERPROFILE%/Downloads缓存目录~/Library/Caches, ~/.cache``~/.cache, ~/.gradle/caches``%LOCALAPPDATA%/Temp回收站~/.Trash``~/.local/share/Trash/files``$Recycle.Bin
send2trash,无其他第三方依赖