tree++: 好的多的Windowstree命令
July 31, 2026 · View on GitHub
Windows上的tree命令自从近40年前发布以来几乎就没有改动. 在如今LLM的时代, 作为描述项目结构非常常用的工具, 仅有的/f和/a两个参数的功能显然捉襟见肘. 同时, 它也不太快.
tree++是对tree的一次全面升级, 为Windows平台下的tree命令引入了:
- 扩展参数集, 支持功能涵盖包括显示文件大小, 递归深度限制, 修改输出风格, 将结果输出至文件, 及排除指定目录(包括遵循
.gitignore)等常用功能 - Rust的实现更好的性能, 在批处理模式下更支持多线程, 提供显著的扫描速度提升
- 兼容原有的Windows
tree命令参数和输出格式, 并可使用Unix风格的参数(如-f和--files)
tree++使用Rust实现, 开源于GitHub.
性能对比(使用确定性目录夹具):
| 类型 | 基准 (ms) | treepp (ms) | 倍率 |
|---|---|---|---|
Streaming | 47.38 | 47.39 | 1.00x |
Batch /T 1 | 66.42 | 48.61 | 1.37x |
Batch /T 2 | 49.56 | 38.42 | 1.29x |
Batch /T 4 | 41.48 | 36.33 | 1.14x |
Batch /T 8 | 37.97 | 29.96 | 1.27x |
Batch /T 16 | 39.43 | 29.97 | 1.32x |
Batch /T 32 | 24.17 | 23.35 | 1.04x |
Disk usage | 23.74 | 24.83 | 0.96x |
Disk usage /L | 98.33 | 67.14 | 1.46x |
.gitignore | 81.41 | 38.70 | 2.10x |
Wide tree | 274.41 | 277.12 | 0.99x |
Deep tree | 25.20 | 26.54 | 0.95x |
Many small files | 32.83 | 38.44 | 0.85x |
安装
从Release下载Windows x64压缩包, 解压到合适目录, 并将目录添加至环境变量.
开启Windows终端, 执行:
treepp /v
有输出:
treepp 1.0.0
即完成安装.
随后, 你可以以和普通的Windows tree命令一样的方式使用:
treepp /f
速览
| 参数集(等价写法) | 说明 |
|---|---|
--help -h /? | 显示帮助信息 |
--version -v /V | 显示版本信息 |
--ascii -a /A | 使用 ASCII 字符绘制树 |
--files -f /F | 显示文件 |
--full-path -p /FP | 显示完整路径 |
--human-readable -H /HR | 以人类可读方式显示文件大小 |
--no-indent -i /NI | 不显示树形连接线 |
--reverse -r /R | 逆序排序 |
--all -k /AL | 显示隐藏文件 |
--size -s /S | 显示文件大小(字节) |
--date -d /DT | 显示最后修改日期 |
--exclude -I /X | 排除匹配的文件或目录 |
--level -L /L | 限制递归深度 |
--include -m /M | 仅显示匹配的文件 |
--disk-usage -u /DU | 显示目录累计大小 |
--report -e /RP | 显示末尾统计信息 |
--no-win-banner -N /NB | 不显示 Windows 原生 tree 的样板信息 |
--silent -l /SI | 终端静默(结合output指令使用) |
--output -o /O | 将结果输出至文件或stdout |
--format /FMT | 选择text, JSON, YAML或TOML输出 |
--errors -E /ERR | 选择warn, strict或ignore错误处理 |
--batch -b /B | 使用批处理模式 |
--thread -t /T | 批处理模式下的扫描线程数 |
--gitignore -g /G | 遵循.gitignore |
--auto-exclude /AE | 开启生成物/缓存目录排除 |
--no-auto-exclude /NAE | 保持生成物/缓存目录排除关闭 |
完整参数集参阅: tree++参数集文档