dust 是一个命令行磁盘占用查看器,主程序 2882048 字节。给它一个目录,它按体积从大到小列出子目录,每条右边画一根占比条。

它替掉的是「一层层点进属性看大小」这一步。Windows 资源管理器只能算当前文件夹,往下哪一层吃掉空间要靠人手动展开,dust 一次把整棵树按体积排开。

这次扫了两个真实目录:一个 5020 个文件的测试树,量了带色与不带色的耗时和输出字节;另一个 634 MiB 的素材目录,用来截屏确认三列排版。

解压出来三个文件

官方 zip 1087936 字节,解开只有 3 个条目,主程序加 LICENSE 与 README。没有安装向导,不写注册表。

项目字节说明
zip 整体1087936msvc 构建
dust.exe2882048单文件,无外部依赖
解压条目3 个含两条文本
版本命令163 毫秒后两次 121 / 132 毫秒
测试树规模100 个目录每目录 50 个文件,合计 5020 个文件

版本命令连跑三次

# 三次耗时 163 / 132 / 121 毫秒
dust --version
Dust 1.2.6

第一行 163 毫秒是杀毒软件在扫新解压的 exe,后两次 132 和 121 毫秒才是它自己的启动开销。

它不读配置文件

2882048 字节里没有默认配置,参数全靠命令行。-n 控制显示几条,-d 控制往下钻几层,--no-colors 关掉颜色。

扫 5020 个文件 248 毫秒

测试树是 100 个目录、每目录 50 个文件,合计 5020 个文件 96852 字节。带默认样式跑三次是 757 / 272 / 248 毫秒,第一轮冷缓存明显慢。

命令三次耗时输出字节
dust 树目录 -n 20757 / 272 / 2482081
dust 加 --no-colors --no-percent-bars264 / 247 / 253534
两者差约 51547

颜色和占比条占了 1547 字节

同一份输出,关掉颜色和条形图只剩 534 字节,带样式是 2081 字节,差 1547 字节。21 行数据摊下来,每行多出来七十多个字符,都是转义序列和方块字符。

和 os.walk 对一遍

同一棵树用 Python 的 os.walk 加 getsize 遍历,三次是 310 / 286 / 299 毫秒。dust 中位 272 毫秒,快 27 毫秒,两者都在同一量级。

# dust 中位 272 毫秒
dust D:\wb_cache\b4\tree -n 20
# os.walk 中位 299 毫秒
python -c "import os;sum(os.path.getsize(os.path.join(d,f)) for d,_,fs in os.walk('tree') for f in fs)"

三列怎么读

截图那次扫的是 634 MiB 的素材目录,12 行。左边一列体积,中间是带缩进的目录树,右边一列百分比,中间夹一根横条表示占比。

列截图里的值用途
体积817Ki 到 634Mi二进制单位,不是常见的十进制
目录树cover / hexyl / shots / fzf.zip文件名与文件夹混排
占比条最长那根对应 100%横条长度就是百分比
百分比0% 到 100%相对当前根目录的总量

体积单位是二进制的

817Ki 是 836608 字节,不是 817000。对着资源管理器的数字会差 2.4%,看大文件时容易对不上,习惯一下就行。

dust 扫一个 634 MiB 素材目录:左侧体积列、中间带缩进的目录树、右侧占比条与百分比

-d 控制钻几层

加 -d 1 只展开一层,输出从二十多行压到 12 行,屏幕上不用滚动就能看完。不带这个参数它按体积挑,深目录容易把屏占满。

装之前先确认三件事

解压即用,没有安装步骤。要确认的是终端支不支持转义序列,以及路径里有中文会不会出错。

项本次实测说明
系统Windows 10 22H2(19045.6466)官方 msvc 包
终端cmd.exe 开虚终端不开就是一堆方括号
中文路径正常目录名带中文不出错
授权Apache-2.0可商用,可再分发

控制台要开虚终端

cmd 里直接跑,输出会是一串 ←[90m 开头的字符,颜色不生效。这个现象不是程序坏了,是控制台没启用转义序列解析。

它只读不写

dust 不删任何东西,参数里没有删除选项。想让 dust 帮你腾空间做不到,它只负责把数字摊开给人看。

三个真会踩的地方

第一次跑特别慢

冷缓存那轮 757 毫秒,热缓存 248 毫秒,差三倍。刚开机或者刚挂载的磁盘,第一次跑要按三倍时间预期。

默认行数会把屏占满

不带 -n 时它按体积挑,深目录能列出几十行。终端只有 30 行时,前面的结果被顶上去看不到,加 -n 12 更实用。

权限不足的目录被静默跳过

扫系统盘时,没有权限的子目录不会报错,直接从总量里消失。总数比资源管理器小一截时,先怀疑权限,不是程序算错。

什么场景值得上

找「磁盘怎么满了」这件事最合适。634 MiB 的素材目录一次列出 12 行,哪个子目录吃掉大半一眼看得出,比一层层点属性快。

反过来,只想知道单个文件夹多大的人用不上。资源管理器右键看属性已经够,装一个 2882048 字节的 exe 换不来多少。

项目数值
exe 字节2882048
zip 字节1087936
扫 5020 个文件248 到 272 毫秒
带样式输出2081 字节
纯文本输出534 字节