清理空间
在 SpaceKnife 里按一个键不会立刻删掉任何东西。想删的东西先进删除篮:删除篮先算出能释放多少、检查哪些正被占用或受保护,然后才移到回收站(默认)或永久删除,两条路都留有退路。
在任意块上右键:文件、文件夹或小项聚合块都可以。目标块先被选中,菜单紧挨着它弹出,菜单里的动作都作用于你点的那一项。用键盘时,对选中的块按 Shift+F10 或 Menu 键。详情面板顶部的「更多操作」按钮打开的也是同一个菜单。
菜单头显示完整名称,下一行是「大小 · 类别 · 所在文件夹」,有标签时右侧显示标签形状。
| 菜单项 | 按键 | 作用 |
|---|---|---|
| 打开 | 文件用默认程序打开;文件夹在文件管理器中打开。 | |
| 在资源管理器中显示 | Ctrl+E | 打开所在文件夹并选中这一项。macOS 上是「在访达中显示」,Linux 上是「在文件管理器中显示」。 |
| 在此打开终端 | Ctrl+` | 在这个文件夹(对文件则是它所在的文件夹)打开终端。Windows 上是 Windows Terminal(wt.exe),macOS 上是「终端」,Linux 上是 x-terminal-emulator。 |
| 复制路径 ▸ | Ctrl+C 复制「原样」 | 四种格式,每项都预览实际会复制的文本(见下文)。 |
| 加标签 ▸ | Ctrl+1–4、Ctrl+0 | 「红色标签」「黄色标签」「绿色标签」「蓝色标签」「清除标签」。见标签与文件类别。 |
| 只看这里(放大) | Enter | 放大进入这一项,和双击相同。对当前已经放大进入的文件夹不显示。 |
| 重新扫描此文件夹 | 把这个文件夹连同其下内容重新读一遍;对文件则是它所在的文件夹。见实时监控。 | |
| 加入删除篮 | Delete | 见下面的删除篮。 |
| 系统菜单… | 显示为灰色:当前版本不可用。 |
表里的按键不打开菜单也能用:只要树图有焦点,就作用于选中的块(在过滤框里输入时除外,那里的 Ctrl+C 照常复制文字)。
不适用的项显示为灰色,悬停时说明原因。小项聚合块不是一个具体位置(「小项聚合块不是一个具体位置」),所以打开、显示、终端和复制路径都不可用,也不能加标签,但可以加入删除篮。MFT 快速扫描里的 NTFS 元数据与孤立文件在磁盘上没有对应的位置,文件类操作对它们不可用。
菜单里的键盘操作:↑ / ↓ 移动(首尾循环),→ 或 Enter 展开子菜单,← 或 Esc 收起子菜单,Enter 执行高亮项,Esc 关闭菜单。点菜单以外的地方、调整窗口大小或切到别的窗口,菜单也会关闭。
复制路径的四种格式
Section titled “复制路径的四种格式”四种格式都由后端生成,所以每个前端的结果完全一致。
| 格式 | Windows | Linux / macOS |
|---|---|---|
| 原样 | C:\Users\lenny\Downloads\big file.iso |
/home/lenny/My Videos/it's.mp4 |
| 带引号 | "C:\Users\lenny\Downloads\big file.iso" |
'/home/lenny/My Videos/it'\''s.mp4' |
| POSIX 路径 | /mnt/c/Users/lenny/Downloads/big file.iso |
与「原样」相同 |
| file:// URI | file:///C:/Users/lenny/Downloads/big%20file.iso |
file:///home/lenny/My%20Videos/it%27s.mp4 |
- Linux 和 macOS 上的「带引号」用单引号,路径里的
'写成'\''。单引号里 shell 什么都不展开($、反引号、!),粘进任何 shell 都能直接用。 - Windows 上的「POSIX 路径」是 WSL 形式:盘符小写,放在
/mnt/下。网络路径\\nas\share\x变成//nas/share/x。 - 「file:// URI」按 RFC 8089 生成:空格、非 ASCII 字符和保留字符按 UTF-8 做百分号编码。网络路径变成
file://nas/share/x。
- 选中块后按 Delete(Mac 键盘上是 fn+Delete)。
- 右键菜单或详情面板里的「加入删除篮」。
- 在过滤结果列表的某一行上按 Delete:先过滤,再用 ↓ 逐行往下,看中的就加入。
- 命令面板里的「加入删除篮」。
加入时不确认,也不碰磁盘,只弹一句提示:「已加入删除篮」「已经在删除篮里」,或者「不能删除:…」加上原因。
小项聚合块:右键选「加入删除篮」,删除篮里多出一项「{n} 个小项」,挂在它所在的文件夹下。它只包含加入那一刻块里的那些文件:同一文件夹里单独成块的大文件不算,之后新出现的文件也不算。(Delete 键不加入小项聚合块,请用右键菜单。)
嵌套关系自动处理:
- 同一路径不会加入两次。
- 加入一个文件夹时,篮里已有的它里面的项并入这个文件夹(「已加入删除篮(并入了篮里的 3 项)」)。
- 要加入的项已经被篮里某个文件夹包含时,不会新增条目。
删除篮属于整个程序,不属于某个标签:来自不同标签的项可以同时待在篮里。退出 SpaceKnife 时删除篮清空。
工具栏最右边的删除篮按钮上显示篮里的项数。点它(或在命令面板里运行「打开删除篮」)打开抽屉,它代替侧栏的位置;再点一次或点「×」关闭。开合不改变篮里的内容。
- 可释放:删除后能释放的总量,大字显示。
- 容量条:要释放最多的那个卷:已用|删除篮|可用。下面一行如「C:\ 可用 182.4 GB › 271.6 GB」,后一个数是删除后的可用空间,右侧是卷的总容量。
- 待删除:篮里的项,可按「按大小」「按名称」「按位置」排序。每行有名称、标签、所在文件夹、大小和占篮比例,以及移出删除篮的「×」(不改动磁盘)。
- 合计和回收站说明:「移到回收站后,空间要等清空回收站才会释放」,附带这个卷的回收站当前占用,或者哪些卷没有回收站。
- 「…」按钮清空删除篮,不删除任何文件。
怎样算可释放
Section titled “怎样算可释放”- 按占用(磁盘上实际占的空间)计,不按逻辑大小。
- 嵌套的项只算一次。
- 有多个硬链接的文件,只有所有名字都在篮里时才算;否则删掉其中一个名字释放不了空间,记为 0。
- 云端占位文件(只在云端存着的文件)记为 0。
- 被占用的项照样计入:程序放开它之后就能释放。
现在不能删的项
Section titled “现在不能删的项”有些项留在篮里,下面带一行警告,抽屉底部显示「{n} 项现在不能删除,执行时会跳过」。
| 警告 | 原因 |
|---|---|
| 正在被 {names} 使用,需先退出 | 别的程序正打开着它。Windows 上能说出程序名(Restart Manager);Linux 查看 /proc 里打开的文件,只看你有权查看的进程;macOS 用 lsof。加入时检查一次,删除前再检查一次。 |
| 已不存在 | 它已在 SpaceKnife 之外被删除或移走。 |
| 受保护的系统位置,不能删除 | 见受保护的位置。 |
磁盘上的文件变化后,删除篮在安静约一秒后重新核对:大小跟着变,消失的项被标出来。
「移到回收站」是主按钮,点了立即执行,不再确认。
- 提示条显示进度(「正在移到回收站 1,204 / 18,406…」)和「停止」。停止后已完成的部分保持完成,其余留在篮里。
- 完成后显示「已移到回收站 {n} 项({size})」。失败的项带着原因留在篮里,日志面板(Ctrl+J)里有记录。
- 「撤销(5 秒)」把这次移走的项全部放回原处,并重新放回删除篮。原位置已经有了同名的新文件时不会覆盖(「原位置已有同名项目,未覆盖」)。
「永久删除…」不经过回收站。
- 弹出确认框「永久删除 {n} 项({size})?」:「不进回收站,无法从回收站还原。执行前有 5 秒可以撤销。」焦点在「取消」上,直接按 Enter 就是取消。
- 确认后提示条倒计时「{n} 项将被永久删除」,带「撤销(5 秒)」。这时什么都还没碰;点「撤销」就作废,项留在篮里。关掉提示条不会作废。
- 倒计时结束开始删除,显示进度和「停止」。在一个文件夹删到一半时停止,可能留下删了一部分的文件夹(「已取消,其中一部分已删除」)。
- 完成后提示释放了多少:「已永久删除 {n} 项,释放 {size}」。
同一时间只执行一个文件操作。
删除前的复核
Section titled “删除前的复核”无论哪种方式,每一项在动手前都再核对一次:仍然存在、仍然不受保护、没有被占用。没通过的跳过,留在篮里。
删除之后树图跟着变:实时监控开着时,变化作为文件变化到达(块消失、父块闪烁);关着时,SpaceKnife 把受影响的父文件夹重新读一遍。
受保护的位置
Section titled “受保护的位置”有些位置根本不能加入删除篮,加入时提示「不能删除:…」和原因。下表中「本身」表示这个文件夹不能删,但其中的单项可以删。路径中的链接会先解析,所以通过链接指向受保护文件夹的路径同样受保护。
| 受保护 | |
|---|---|
| 所有平台 | 卷的根目录。挂载着另一个卷的文件夹。SpaceKnife 自己的数据目录,以及正在运行的程序所在目录。 |
| Windows | C:\Windows 及其下全部内容(C:\Windows\Temp 里的内容除外)。Program Files、Program Files (x86)、ProgramData 本身。C:\Users 本身、每个用户主目录本身,以及你的 AppData、AppData\Local、AppData\LocalLow、AppData\Roaming 本身。系统盘上的 Recovery、Boot、EFI、$WinREAgent、bootmgr、BOOTNXT。任意卷上的 pagefile.sys、hiberfil.sys、swapfile.sys、$Recycle.Bin、System Volume Information。 |
| Linux | /bin、/boot、/dev、/etc、/lib、/lib32、/lib64、/libx32、/proc、/run(/run/media、/run/user、/run/mount 里面的内容除外)、/sbin、/sys、/usr、/efi 及其下全部内容。软件包数据库 /var/lib/dpkg、/var/lib/rpm、/var/lib/dnf、/var/lib/pacman。/var、/var/lib、/var/log、/var/cache、/var/tmp、/tmp、/opt、/srv、/mnt、/media、/snap、/lost+found 本身。/home 本身、每个用户主目录本身、/root。你的 ~/.config、~/.local、~/.local/share、~/.local/state 本身。回收站目录。 |
| macOS | /System、/bin、/sbin、/usr、/dev、/etc、/private/etc、/private/var/db、/private/var/vm、/Library/Apple、/cores 及其下全部内容。/Applications、/System/Applications、/Library、/Volumes、/private、/private/var、/private/tmp、/var、/tmp、/opt 本身。/Users 本身、每个用户主目录本身。你的 ~/Library、~/Library/Application Support、~/Library/Mobile Documents、~/.config、~/.local、~/.local/share、~/.local/state 本身。~/.Trash 和 .Trashes。 |
SpaceKnife 内置一套约 110 条的规则,描述常见的文件夹和文件:它们是什么、能不能清理。目前它出现在快照对比里:命中规则的变化项,名称后面带一个短注。举几个例子:
| 类别 | 可能看到的短注 |
|---|---|
| 虚拟机与容器 | Docker 数据、WSL 磁盘、虚拟机、模拟器 |
| 开发 | 依赖安装(node_modules)、虚拟环境、包缓存、构建缓存、工具链、IDE 缓存 |
| 浏览器与应用 | 浏览器缓存、应用缓存、微信数据、Telegram 缓存 |
| 游戏 | Steam 库、游戏更新、着色器缓存、创意工坊 |
| AI 模型 | 大模型、模型缓存 |
| 系统 | 系统更新、系统升级、休眠文件、虚拟内存、系统组件、还原点、临时文件、缩略图缓存、崩溃转储、系统日志 |
短注说明它是什么,不代表可以放心删除。SpaceKnife 真正拒绝删除的,是上面受保护的位置里列出的那些。
| 按键 | 作用 |
|---|---|
| Delete | 把选中项加入删除篮 |
| Shift+F10 / Menu | 选中项的右键菜单 |
| Ctrl+C | 复制路径(原样) |
| Ctrl+E | 在资源管理器 / 访达 / 文件管理器中显示 |
| Ctrl+` | 在此打开终端 |
| Ctrl+1–4、Ctrl+0 | 红、黄、绿、蓝标签;清除标签(树图有焦点时不按 Ctrl 也行,除非在标签设置里关掉了) |
| Enter | 放大进入选中项 |
| 结果列表里:Delete、Space、Enter | 加入删除篮、在图上定位、放大进入 |
macOS 上凡是写 Ctrl 的地方都可以用 ⌘。全部按键见快捷键。
一年没动过的大文件:按 /,输入 >1gb;>1y(占用大于 1 GB、修改于一年之前)。点结果列表的第一行,用 ↓ 往下走,该删的按 Delete。打开删除篮,「按位置」排序核对一遍,然后「移到回收站」。
只清一个文件夹里的零碎:放大进入那个文件夹,右键它的小项聚合块,「加入删除篮」只带走这些小文件,旁边的大文件不动。
清理前后对照:大扫除之前先保存快照(命令面板 ›「保存快照」,0.3.2 起也可以按 Ctrl+S)。清理后和「现在」对比,切到「减少」,看真正少了什么。
把路径交给终端:选中后用「复制路径 › 带引号」粘进 shell,「POSIX 路径」给 WSL;或者直接按 Ctrl+` 在那里打开终端。