lsd 1.2.0 是 ls 的替代品,压缩包 1895357 字节,主程序 4315136 字节,用图标、颜色和树形结构重新组织目录列表。

它要解决的是:Windows 终端里的 dir 只给一列白色文字,看不出哪个是文件夹、哪个是几 KB 的临时文件,想看一眼目录结构还得靠脑补缩进。

这次量了它在小目录和大目录下的耗时,以及输出体积跟 -l、--tree 的关系。

一个 4315136 字节的 exe

压缩包解开就是一个 exe,Rust 编译,不依赖运行库。

项值说明
压缩包1895357 字节lsd-v1.2.0-x86_64-pc-windows-gnu.zip
lsd.exe4315136 字节单文件,放在 PATH 里就能用
版本1.2.0--version 输出一行
测试目录2 类一个 12 项的工作目录,一个 4000 多项的 System32

gnu 版和 msvc 版都有

发布页两个 Windows 构建:x86_64-pc-windows-gnu.zip 与 i686-pc-windows-msvc.zip。这次用的是 gnu 版,运行不依赖 VC 运行库。

启动开销约 175 毫秒

空目录和满目录的耗时差主要在遍历,进程启动本身占 170 毫秒上下,这是 Rust 单文件程序的常见量级。

三种写法,耗时差不多

同一个目录,加不加参数对耗时影响很小,差别体现在输出字节上。

参数耗时输出字节
无参数175 ms73
-l176 ms409
--tree --depth 2177 ms305

-l 的输出是默认的 5 倍

409 字节对 73 字节,多出来的部分是权限位、大小、修改时间三类字段。目录项只有一屏的时候,这 336 字节换来的信息密度是值得的。

三种写法的耗时几乎一致

175、176、177,差 2 毫秒。说明这几种模式的渲染成本可以忽略,时间全花在进程启动和目录读取上。

System32 用了 1203 毫秒

换成一个 4000 多项的真实系统目录,耗时涨了约 7 倍,输出涨到 265856 字节。

目录耗时输出字节
工作目录(12 项)176 ms409
System32(4000+ 项)1203 ms265856

每项大约多花 0.25 毫秒

1203 减 176 是 1027 毫秒,摊到 4000 多项上,每项约 0.25 毫秒。这个数字包含读取元数据、算图标、生成颜色。

265856 字节会有明显等待感

26 万字节刷到终端上,视觉上是连续滚动好几秒。要在这个量级的目录里找东西,用 -l 不如直接用 --tree --depth 1 收窄范围。

输出长什么样

截图里上半段是 -l 的结果,下半段是 --tree --depth 1。

元素呈现方式
文件夹蓝色加粗,带文件夹图标
普通文件白色,按扩展名分色
权限位形如 -rw- ?,问号表示 Windows 上没有 POSIX 权限
大小自动换算成 B、KB、MB
时间Fri Oct 30 18:17:26 2026 这种完整格式
lsd 1.2.0 在一个工作目录里输出的清单:每行依次是权限位 -rw- ?、大小如 301 B 与 9.6 MB、时间 Fri Oct 30 18:17:26 2026,文件名按类型分色,三个目录 dog、gitcliff、lsd 显示为蓝色,下方是 --tree --depth 1 输出的缩进层级

权限位后面那个问号

Windows 文件系统没有 POSIX 权限,lsd 把这一格显示成问号。看到 -rw- ? 不是出错,是它如实反映拿不到的信息。

树形模式默认只给名字

--tree --depth 1 不带大小和时间,只有缩进的名称层级。想同时看大小要再叠 -l,输出会变长很多。

什么场景值得上

每天在终端里翻目录、又想让文件夹一眼可辨的时候。

场景合适度说明
日常翻目录高175 毫秒启动,颜色与图标直接分辨类型
看目录结构高--tree 给缩进层级,不用自己数缩进
列出上万项的目录低1203 毫秒且刷屏 26 万字节
脚本里解析输出低颜色与图标都是给人看的,机器解析要用别的工具

它替换的是 ls 的习惯,不是 dir 的功能

Windows 上长期用 dir 的人会觉得参数不熟,但常用项就三四个:-l 看详情、-a 看隐藏项、--tree 看层级。

授权与费用

Apache-2.0 许可,个人与商业环境都不收费。源码在 GitHub 上,主要语言 Rust,发布页覆盖 Windows、macOS、Linux 三平台。