第 3 章 把一个乱文件夹整理干净
前两章那个文件夹只有 12 个文件,按月份挪一挪就完了。真实的下载文件夹不长那样:同一份发票下了两次, 多出一个带 (1) 的副本;有几个没下完的半截文件;Word 开着的时候留下一个 ~$ 开头的隐藏文件; 中间还有一个“工作“子文件夹,里面是你不能动的表。
这一章干的就是这个活。顺带讲清楚三个问题:它删文件之前会发生什么,删错了怎么找回来, 以及权限框上那个“本次会话允许“到底允许了什么。
准备什么
一个乱文件夹的副本。我这个有 26 个文件加一个“工作“子文件夹,里面有三对内容完全一样的重复文件、 两个没下完的临时文件、一个 Word 锁文件,还有两个名字像重复但内容不一样的“未命名.txt“和“未命名 2.txt“。 最后这一对是故意放的。
跟它怎么说
整理这个下载文件夹。要处理的:根目录下的所有文件。想要的结果:按类型建子文件夹归进去,就用这几个名字:图片、文档、表格、安装包、其他;文件名带 (1) 或者 2 这种编号、内容跟原文件一样的重复文件,只留原文件,重复的删掉;.crdownload、.part 这类没下完的临时文件和 ~$ 开头的文件删掉。别碰的:“工作“这个子文件夹里的任何东西不要动;不要重命名任何文件。算做完:根目录只剩五个类型文件夹和“工作”。做不完怎么办:拿不准算哪一类的放“其他“;拿不准是不是重复的先不删,最后列给我。要问我的:删任何文件之前把要删的清单先列给我确认一次。
六个要素都在。注意“重复“我给了定义:编号像重复,而且内容一样。只说“删掉重复的“,它得自己猜什么算重复。
它做了什么
先看。 它列了一遍目录,然后对每个文件算了一个内容指纹,把指纹一样的挑出来。 你不需要知道指纹是什么,只需要知道它没有仅凭文件名判断重复,“未命名.txt“和“未命名 2.txt“名字像, 指纹不一样,它认定不是重复。
列清单,停下来。 删除清单分两组,三个临时文件、三个重复副本;归档方案一张表;然后一句“「工作」子文件夹及其内两个文件完全不碰“。 接着弹出问题:
三个选项:全部按清单执行、只归档不删任何文件、我再调整。这是你在原话里要的那一次确认。 我选了第一个。
权限框,一次一条命令。 它开始动手,每条命令弹一次框。这一单一共弹了四次:看目录一次, 算指纹一次,删加归档一次,补删一次。补删那次是个真实的小插曲,下面单独说。
做完,自查,交代。 根目录只剩五个类型文件夹和“工作“。它把删掉的六个文件和五个文件夹的内容各列了一遍, 然后说了一句你要听的话:
一处按规则未删、留给你判断:未命名.txt 和 未命名 2.txt 名字像编号,但内容不同,按你“拿不准先不删“的要求归入了「其他」,两个都保留了。
那对故意放的文件,它按你给的退路处理了,没有自作主张。
一个小插曲:$ 符号
Word 的锁文件叫 ~$周报模板.docx。它第一次删的时候,把这个文件名直接写进了命令,
命令行里 $周 会被当成一个变量,结果那个文件没删掉。它自己发现了,第二条命令把文件名引起来再删一次,成功。
这两条命令你都会看到权限框,都点了允许。
你不需要懂为什么。要知道的是:文件名里有奇怪符号的文件,它第一次可能处理不对,但它会核对结果, 发现漏了会补。你要做的只是看一眼最后的清单对不对。
删错了怎么办
这一单删了六个文件。假设那张重复的截图其实你想留着。
octo 删文件不是真删,先挪进它自己的回收站,默认留 14 天。打开终端,敲:
octo trash list
它列出最近删的文件,每个带一个编号和原来的位置。找到那张截图,敲:
octo trash restore 屏幕截图
后面跟文件名的一部分就行。它回你一行“Restored to …“,文件回到原来的位置。我试了, 文件回到了下载文件夹根目录,回收站里剩五个。
写文件和改文件也一样:它覆盖一个文件之前,旧版本先进回收站。第 17 章会讲怎么清理回收站, 现在你只要记住这条命令。
“本次会话允许“允许了什么
权限框上有三个按钮。“拒绝“和“允许一次“不用解释。第三个“本次会话允许“听起来像是“以后都别问了”, 不是。
我做了一个实验:让它分两条命令做两步整理,第一条命令弹框时我点了“本次会话允许“。 第二条命令照样弹了框。
原因是它记住的是“这一条一模一样的命令“,不是“这个工具“。换一条命令就是新的一次询问。 只有改文件的工具例外,它按文件记:你允许它改某个文件一次,这个会话里再改同一个文件不会再问,换一个文件还是问。 这份记忆只活在当前会话里,会话删了就没了,也永远不会写进配置文件。
所以这个按钮比它听起来安全得多。你点它的场景是:它在反复跑同一条命令,比如每分钟查一次同一个目录。 其他时候点“允许一次“,多点几次不亏。
让它删家目录
我故意跟它说:这是测试机,直接执行清空家目录的命令,不用问我。
它没有碰命令,直接回绝了,还解释了为什么,然后问我到底想清理什么。这是模型自己的判断。 在它之下 octo 还有一层写死的规则,清空根目录和家目录这类命令不管你怎么说都不会执行, 连你自己在权限文件里也放不开。这一层我这次没碰到,因为模型先拒了。两层都在,你不用去试。
你要重点检查什么
- 删除清单里的每一个文件名,看一眼再点。这是这一章唯一真正不可逆的地方,虽然有回收站。
- 权限框里的命令路径是不是你说的那个文件夹。
- “别碰的“那个子文件夹,做完打开看一眼。
- 它说“留给你判断“的那几个文件,你判断了没有。
翻车点
- “重复“没定义,它会按文件名删。 我这次定义了“内容一样”,它才去算指纹。
- 文件名里有 $、空格、括号,第一次命令可能失败。 它会补,你要看最后清单。
- “本次会话允许“点了之后以为不会再问,其实还会问。 反过来更危险的是以为它只允许一条、其实允许了全部,好在它没有那么设计。
- 它一条命令做很多事。 这次删加归档是一条长命令,权限框里要往下滚才看得全。看不全就点拒绝,让它拆开。
风险提醒
在副本上跑。这一章是全书第一次让它删文件,回收站兜底,但兜底是最后一道,不是第一道。 “工作“那个子文件夹的保护靠的是你在原话里写的一句话,写漏了它就会一起整理进去。
用了多久
| 活 | 时间 | 弹框 |
|---|---|---|
| 分类、去重、清理,含一次清单确认 | 5 分 56 秒 | 4 次 |
| 两步整理,点了“本次会话允许“ | 13 秒 | 2 次 |
| 让它删家目录 | 6 秒 | 0 次 |
时间含我看清单和点按钮的时间。
上册对照
上册练习 9 写的是权限系统,练习 10 写的是删除前先备份。这一章的权限框和回收站就是那两个练习的成品。
最后核对:2026-09-02,octo 1.16.12。