Linux 磁盘垃圾清理工具 —— 树状结构扫描,专为配合 AI 定位并清理垃圾而设计。
一个零依赖的 Bash 脚本,把「某个目录下到底什么在占空间」渲染成一棵可读的树, 让 AI(或人)从顶层顺藤摸瓜,快速判断垃圾在哪、删掉能释放多少。
- 🌳 树状递归下钻:每个超过阈值的目录自动展开,子项按大小降序;低于阈值的折叠成一行
… 另有 N 个小于阈值(合计 X)。 - 🎚️ 阈值即抽象旋钮:支持
K/M/G/T后缀。调大阈值 = 更粗的抽象(看全局),调小 = 更细(下钻定位)。 - 🛑 停钻屏蔽词:
target、node_modules等「已知垃圾层」折叠成一整块可删单元,不再展开无意义的子项。 - 📏 两种大小口径:
actual(真实占用块,默认,稀疏文件如虚拟机磁盘不虚高)与apparent(表观大小)。 - 📊 抽象程度仪表:统计「匹配文件 / 匹配文件夹」数量,一眼判断阈值是否合适。
- 🔍 隐藏文件纳入、软链接跳过:不漏扫,也不误跟链接。
./scan_tree.sh ~ 1G # 扫描家目录,阈值 1G(真实占用)
./scan_tree.sh ~ 1G - apparent # 表观大小口径
./scan_tree.sh ~ 200M target,node_modules,.venv # 自定义停钻屏蔽词
./scan_tree.sh ~ 1G - # 关闭屏蔽词(全部下钻)| 位置 | 参数 | 说明 | 默认值 |
|---|---|---|---|
| 1 | 目录 | 要扫描的目录 | . |
| 2 | 阈值 | 最小展示大小,支持 K/M/G/T |
50M |
| 3 | 屏蔽词 | 逗号分隔的「停钻」目录名 | target,node_modules,.git,__pycache__,dist,build |
| 4 | 口径 | actual(真实占用)或 apparent(表观) |
actual |
输出示例:
扫描: /home/user 阈值: 1G 口径: actual
停钻屏蔽词: target,node_modules,.git,__pycache__,dist,build(命中目录视为原子单元,不展开)
--------------------------------------------------------------
203.8G [目录·停] /home/user/code/xxx/rust/target
18.1G [目录·停] /home/user/code/yyy/src-tauri/target
58.8G [目录] /home/user/.cache/uv
...
--------------------------------------------------------------
匹配文件 : 20 个(大小 ≥ 1G)
匹配文件夹 : 250 个(大小 ≥ 1G)
其中停钻 : 8 个(命中屏蔽词,未展开)
合计 : 270 个
把输出直接喂给 AI,让它判断哪些是垃圾、能释放多少:
./scan_tree.sh ~ 1G > tree.txt然后把 tree.txt 的内容粘给 AI,附上一句:
基于这棵树,列出可安全清理的项、每项能释放多少空间、以及注意事项。
树里每行都带「大小 + 类型 + 完整路径」,AI 能直接定位、估算释放量,甚至生成删除命令。
- 先看
[目录·停]的大块:target/node_modules等构建产物,可再生,最值得删。 - 再看
[文件]大项:单个大文件(磁盘镜像、压缩包、模型权重)通常可直接删。 - 最后看
[目录]容器:顺着最大的继续下钻,直到定位到具体垃圾。
- 大小单调性剪枝:目录大小 ≥ 其任何后代大小 ⇒「目录低于阈值 ⇒ 内部全低于阈值」,可安全整棵砍掉,这是下钻停止条件,也保证高效。
- 不是
ncdu的替代,而是互补:ncdu用于人工交互式浏览;本工具用于产出一次性快照交给 AI 分析。 - 抽象层可调:阈值 + 停钻屏蔽词共同决定「抽象停留在哪一层」,让输出既不淹没在碎片里,也不粗到看不清。
仅需标准 GNU 工具:bash、du、awk、sort、mktemp。无需安装任何第三方软件。