folder-organizer
Skill2 starsChanged 3 months agoMITView on GitHub
整理任意乱文件夹的完整方法——先按内容查重删冗余、再真正读进文件内容搞懂每个文件是什么、 然后给出归类建议并按用户认可的结构重排(可选:内容驱动重命名 + 版本迭代 diff + 知识图谱)。 凡是用户说「帮我整理一下这个文件夹 / 桌面太乱了 / 收拾下 Downloads / 这堆文件归一下类 / 有一堆重复和版本残留 / 帮我重命名一下 / 清一清 / declutter / organize this folder / clean up my desktop」,或者丢来一个塞满杂七杂八文件的目录要求收拾时,务必使用本 skill—— 即使用户只说「乱」「重复」「归类」而没说「整理」。也适用于照片/代码/文档/音视频/混合内容的目录。 不用于单个文件的读取或格式转换(那用对应文件工具)、不用于代码仓库的重构(那是工程任务)。
1 other project uses a version of this.
Adopted by
Most recently taken up by
- gerivdb/SKILLStheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- gerivdb/SKILLS★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Files
Folder Organizer · 任意文件夹整理
为什么需要方法,而不是直接动手
乱文件夹的价值往往很高、删错代价也很高。两条铁律定了整个流程:
- 先搞懂,再动手。 文件名会骗人——叫
final的可能是草稿,叫report.html的可能是登录页。 不读内容就归类/改名,一定会把东西归错、把人误导。所以「读内容」是独立且必做的一步。 - 一切可逆。 删除只走「移进暂存夹」,永远不硬删;每个破坏性动作前先给用户确认。 用户随时能反悔,这是他敢让你动手的前提。
还有一条贯穿全程:分类法是问出来/从内容推出来的,不是你内置的。 同一堆文件,有人要按日期、有人按客户、有人按项目、有人按类型——先问清「组织轴」,别硬套一套结构。
适用与不适用
- ✅ 个人/工作长期堆积的目录:桌面、Downloads、项目盘、照片库、素材库、文档堆、混合内容。
- ❌ 代码仓库的重构(那是工程任务,有构建/依赖约束);单文件的读取或格式转换(用对应工具)。
流程:五个阶段,每阶段收在一个「人工确认闸门」
脚本在 scripts/,都是 stdlib、跨平台、对中文/空格/特殊字符文件名安全。
阶段 0 · 画像(先看地形)
python3 scripts/scan.py "<folder>"拿到:总体积、体积热点子夹、文件类型分布、最大的文件、时间跨度。 先递归看全貌——很多目录 80% 的体积集中在几个大文件(一个视频/一个 3D 源文件/一个 zip), 这决定你重点在哪。别只看顶层就下结论。
阶段 1 · 查重删冗余(先清最确定的)
python3 scripts/find_dupes.py "<folder>" --json /tmp/dupes.json它按内容 md5(不是名字)分出两类,要分别对待:
- A 完全重复(逐字节相同):可只留一份。典型来源:macOS 复制残留
xxx 2.ext、(1)后缀、 同一文件被打包进 zip 又散落一份。→ 走暂存(下方),确认后清。 - B 版本残留(名字相近、内容不同):这是迭代版本(v1/v2、副本、_final、时间戳)。
绝不替用户决定删哪个。 只做「归拢进
_历史版本/」,留最新版在外面——哪版是终版用户最清楚。
删除永远用暂存脚本(可逆):
bash scripts/safe_stage.sh "<folder>" "<folder>/path/dup1" "<folder>/path/dup2"🚪 闸门:动手前把「要暂存的精确清单」给用户看,确认后才 stage。
同时顺手识别两类需要特别提醒的文件(别删,是提醒/移走):
- 明确垃圾:
.~$…(Office 崩溃临时)、*.crdownload/*.part/*.qkdownloading(没下完的半成品)、.DS_Store。 - 敏感个人信息:身份证/护照/银行卡/合同/密码文件混在工作夹里——主动指出,建议移到私人目录。
阶段 2 · 读进内容(本 skill 的差异化所在)
python3 scripts/signatures.py "<folder>" # 全部
python3 scripts/signatures.py "<folder>" --ext .html,.xlsx,.pdf # 只挑某几类对每个文件按类型抽「内容签名」,读不了就退化到元数据(见 references/readers.md):
html 抽 title+h1/h2、office 抽表名/文档标题、pdf 抽首页、图片抽 EXIF、音视频抽时长标签……
目的:搞懂每个文件真实是什么,纠正「看名字会归错的分类」。
文件很多时先读体量最大或最关键的一批,够判断分类即可,不必逐个全读。
阶段 3 · 给整理建议(先问轴,再出方案)
基于阶段 2 读到的内容:
- 问用户组织轴:这堆东西按什么分?(日期 / 客户 / 项目 / 类型 / 主题 / 过程阶段) 以及「理想终态想要什么」。分类法从这里定,不是你拍脑袋。 决策类问题用一次性多选提问(若环境支持 AskUserQuestion),别来回挤牙膏。
- 出一版目标结构 + 归类映射(哪个文件进哪个夹),大文件夹可再开二级(按子专题/过程)。 小夹(就三五个文件)保持平铺,别过度嵌套。 🚪 闸门:结构方案先给用户确认/调整,认可后才执行。
阶段 4 · 执行归类(+ 可选重命名)
- 建目标结构、按映射
mv。破坏性小,但仍逐步做、每批回报。 - 重命名是可选的、且要先锁规则——见下节。
重命名(只在用户要求时做,且先锁规则)
批量改名前,用一次提问锁死 4 件事,避免返工:
① 命名结构(如 日期-内容-版本)· ② 语言(统一中文/英文/保持原样)·
③ 版本标记(v1/v2/v3 vs 日期 vs 只留终版)· ④ 分隔符(- / _ / 空格)。
起名原则——一眼看穿内容:把文件里最关键的结论/数字压进名字,而不是清理原标题。
反例:
分析.xlsx正例:20250807-季度留存分析-流失集中在第3周.xlsx
有多版本迭代时,diff 出「每版新增了啥」:文本/office 比标题与结构(如 xlsx 比工作表名),
把简短 delta 写进文件名(-v2-拆一级二级汇总),完整对比写一份 _版本迭代说明.md。
🚪 闸门:出逐文件「旧名 → 新名」对照表,确认后再批量改。
可选产出 · 知识图谱
当这堆东西之间确有关系值得看(数据流、依赖、工具供给、版本演进)时, 可产出一张 HTML「工作图谱」:画项目间真实关系(不是文件夹树),把关键结论嵌进节点。 关系从阶段 2 读到的内容推断。不是每个文件夹都需要——无关系就别硬画。
贯穿全程的安全写法(血泪教训,务必遵守)
- 暂存代替硬删:删除一律进
_待删_<日期>/,可逆。 - 确认闸门:每个破坏性阶段(删/大规模移动/批量改名)前,把精确清单给用户确认。
- 版本残留只归拢不删:不替用户判断终版。
- 主动识别敏感件并建议移出工作夹。
- shell 处理文件名:全程双引号包裹;遍历用
find -print0 | while IFS= read -r -d ''; 别用for f in $(...)(会按空格拆断中文/带空格文件名)。 .DS_Store会让rmdir失败:清空目录前先rm -f "<dir>/.DS_Store"再rmdir。- zsh ≠ bash:默认 shell 常是 zsh,别用 bash 关联数组
${!arr[@]}(会报 bad substitution); 用顺序mv或把脚本显式交给bash script.sh跑。 mv链用&&时:一步失败会中断后续;宁可逐条mv并在末尾核对,也别让半截链悄悄漏掉。
脚本清单
| 脚本 | 作用 |
scripts/scan.py | 阶段0 · 文件夹画像(体积/类型/最大文件/时间跨度) |
scripts/find_dupes.py | 阶段1 · 内容级查重(A完全重复 / B版本残留) |
scripts/signatures.py | 阶段2 · 按类型深读内容签名(含优雅退化) |
scripts/safe_stage.sh | 可逆暂存(删除的唯一方式) |
按类型的读取策略与可选外部工具,见 references/readers.md。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

