
C 盘只剩 11 GB 的时候,人做的第一件事通常是打开「设置 – 存储」,看一眼那个慢慢转圈的进度条,然后关掉。这一步唯一的作用,是让你知道该换工具了。
系统自带的存储面板只告诉你类别,不告诉你路径。它说「应用和功能占 68 GB」,但不说这 68 GB 落在哪个文件夹里。要回答这个问题,得换一个能扫全盘的工具。
这篇不比谁更好。四个工具各有它唯一合适的场景,用错了不是慢一点,是白扫一遍。边界比参数重要,因为参数会变,边界不会。
1. WizTree:NTFS 上唯一值得等的那个
WizTree 的做法有点取巧:它不遍历文件,而是直接读 NTFS 的主文件表(MFT)。主文件表里已经记着每个文件的大小和位置,读一遍等于抄一遍目录,比逐个打开文件夹快两个数量级。
实测一台装了 42 万个文件、占用 780 GB 的机器,全盘扫描 4 秒。这个速度带来的变化不是省时间,是你敢反复扫——删完一批再扫一次,立刻看到结果。
边界也很清楚:只支持 Windows,只对 NTFS 有效。外接的 exFAT 移动硬盘、网络映射盘,它退化成普通遍历,速度和我后面要说的工具没有区别。工具的能力上限,由它读什么决定。
2. TreeSize Free:它的价值在报告,不在扫描
TreeSize 的扫描速度和 WizTree 差一个档次,全盘要一两分钟。它真正的位置是「把结果交给别人看」:按文件夹展开的树状列表,每一层都带绝对路径和占比,截图发出去,对方能照着路径自己去找。
免费版能看、能导出 CSV,但过滤器有限制,重复文件查找要专业版。如果你的需求是「找出这台机器上所有大于 1 GB 的 mp4」,免费版会卡在筛选条件上。
3. WinDirStat:开源,但别指望它快
WinDirStat 用色块面积表示文件大小,一张图看完整个盘。它的长处不是找大文件,是让「一堆小文件」显形——比如某个缓存目录里有二十万个 4 KB 的碎文件,列表里看不出问题,色块图上一眼就是一片密集的杂色。
代价是慢。它逐个目录遍历,冷启动扫 40 万文件要五分钟以上,扫描期间界面会卡。它的长处是把「一堆小文件」画成一片颜色,不是把大文件找出来。这是一款十几年没大改的工具,它的存在意义是开源和免费,不是性能。
WinDirStat 还有一个旧版本没有的特性:扫描过程中就能看。你可以一边扫一边点开已经出来的目录,不用等全盘结束,这在只剩 2 GB 空间、连扫描缓存都写不下的时候有用。
4. ncdu:服务器上唯一现实的选择
前面三个都需要图形界面。一台只开了 SSH 的云主机上,能用的只有 ncdu。它用一个全屏终端界面,按大小排序,方向键进去、退出来,几秒钟就能定位到吃满磁盘的那一层。
ncdu 2.x 换成了 Zig 重写,扫描速度比 1.x 快了不少,包管理里通常直接能装。它还有一个被低估的功能:把扫描结果导出成 JSON,下次可以直接读回来对比,不用重扫。
macOS 上这四个里能用的只有 ncdu。APFS 没有类似主文件表的可直读结构,所有工具都只能老实遍历。同样的硬件,换一个文件系统,扫描速度就退回十年前。
| 工具 | 平台 | 索引方式 | 40 万文件耗时 | 适合的场景 |
|---|---|---|---|---|
| WizTree | Windows | 直读 MFT | 约 4 秒 | 本机快速定位、反复扫 |
| TreeSize Free | Windows | 目录遍历 | 1–2 分钟 | 出报告给别人看 |
| WinDirStat | Windows | 目录遍历 | 5 分钟以上 | 看碎文件分布 |
| ncdu | Linux / macOS | 目录遍历 | 30 秒–1 分钟 | SSH 环境、磁盘告警 |
表格里最该注意的一列是「索引方式」。前三个工具在同一个盘上跑出十倍差距,原因不在代码质量,在它们读的是不是同一份数据。
三套组合,对应三种真实处境
组合一:自己的 Windows 笔记本,C 盘告急。WizTree 扫全盘,按大小排序,从最大的目录往下钻三层。找到之后不要在这个工具里删,去资源管理器里确认一遍再动手——WizTree 的删除是永久的,不进回收站。
组合二:一台磁盘 95% 的云主机。ncdu 进根目录,按大小排序,逐层进到最大的目录。不要一上来就 du -sh 整个根目录,那一次扫描能把一台小机器的 IO 打满。先用 ncdu 定位到具体目录,再针对那个目录做处理。
组合三:给行政或财务出一份「这台电脑为什么慢」的说明。TreeSize Free 扫描,导出 CSV 或截图,配上绝对路径。对方要的不是色块,是能照着找的位置。
三种「选错了」的信号
信号一:你在 NTFS 盘上等了三分钟还没出结果。这说明你用的是遍历型工具。Windows 本机排查,换 WizTree,三分钟足够扫五遍。
信号二:你把一张彩色方块图发给了不懂电脑的人。方块图对你自己有用,对别人没用。一张看不出路径的图,等于什么都没说,换成带路径的列表。
信号三:你为了扫服务器,先在服务器上装了桌面环境。这台机器的内存本来就不够,装图形界面只会让情况更糟。SSH 里能跑的工具,才是对的工具。
扫出来之后,真正难的是判断
四个工具都只回答一个问题:哪些文件占了空间。它们不回答第二个问题:这些文件是谁的、还能不能删。
一个 40 GB 的目录,可能是三年没动过的备份,也可能是正在用的虚拟机磁盘。区别不在大小,在最后修改时间和文件所有者。扫描工具给你的是嫌疑名单,不是判决书。
所以更稳的顺序是:先按大小排序,再按修改时间过滤掉最近半年的,剩下那些又大又旧的,逐个确认用途。删错一个 40 GB 的目录,代价远大于多看五分钟。
还有一个常被忽略的细节:工具报的大小,和右键属性看到的不一定一样。硬链接会被重复计算,稀疏文件会把逻辑大小当成占用。差出来的那几个 GB,多半就是这两类文件。
写在最后
磁盘满这件事,本质上是时间和注意力的问题。文件不会突然变大,是一年一年地「先放着,以后再清」,最后堆成了 780 GB。满了不是一次事件,是一年半的拖延叠出来的结果。
工具能让你在一分钟内看到真相,但清不清理是另一个决定。多数人的问题不是不知道哪个目录大,是知道了也不动。它更像一次没有截止日期的搬家。
你上一次认真清理自己的硬盘是什么时候?最大的一块是什么文件?

评论 (0)