tree命令默认未预装于多数Linux发行版,需手动安装;显示中文乱码应加-N参数;限深用-L、过滤用-I/-P;存档时去色并禁用统计更适配CI。
tree 命令不存在或提示 command not found
很多 Linux 发行版(比如 CentOS、Alpine、最小化安装的 Ubuntu)默认不带
,不是你装错了,是它压根没装。
实操建议:
Ubuntu/Debian 系:运行
CentOS/RHEL/Fedora:用
或
Alpine:
macOS(用 Homebrew):
装完直接敲
就能用了——别试
,有些系统装完 man 页面也不自带,查帮助用
更靠谱。
tree 显示中文乱码或缩进错位
本质是终端字符宽度和 tree 对 Unicode 字符宽度的判断不一致,尤其在含中文、emoji 或全角符号的文件名里特别明显。
常见错误现象:分支线断开、文字重叠、目录名被截断。
实操建议:
加
参数强制按字面显示(禁用自动转义),例如:
避免用
(不画竖线)配合中文——它会让结构更难读,不是真“修复”
如果仍错位,试试
(部分新版支持),但不如
通用
终端本身用等宽字体(如 Fira Code、Source Code Pro),别用微软雅黑这类非等宽中文字体
限制深度、过滤类型、避开特定目录
的实用价值不在“全量展开”,而在快速聚焦。默认递归到底,大项目下卡住或信息过载很常见。
使用场景:看源码结构、查配置目录层级、审计日志路径分布。
实操建议:
限深:用
只看两层,
比
干净得多
只看目录(不含文件):
,例如查 Docker 构建上下文有哪些子目录:
排除 node_modules、.git:
,注意用管道分隔,正则不生效,就是字面匹配
只显示 .js 文件:
;多个后缀写成
(需 shell 支持 brace expansion)
输出为文件或适配 CI 日志阅读
直接终端跑
很方便,但存档、发给同事、塞进 CI 日志时,缺行号、无颜色、编码易出问题。
性能影响:加
能少一行统计(如 “32 directories, 147 files”),对自动化脚本更干净。
实操建议:
保存结果:
去色适配纯文本环境(如 GitHub Actions 输出):
,
开颜色,sed 去 ANSI 转义
想带行号?别 pipe 给
,先重定向再处理,否则 tree 的树形缩进会被 nl 打乱
超大目录慎用
(显示隐藏文件),.git 下几十万对象会拖慢几秒甚至卡死
tree 不是 ls 的替代品,它解决的是“关系可视”,不是“快速列文件”。真正要遍历处理,还是 find + shell 更稳——tree 只负责让人一眼看懂“谁在谁下面”。
treesudo apt install treesudo yum install treesudo dnf install treeapk add treebrew install treetreeman treetree --help-Ntree -N /path-itree --charset UTF-8-Ntree-L 2tree -L 3 src/tree src/ | head -50-dtree -L 2 -d-I 'node_modules|.git|__pycache__'-P '*.js'-P '*.{js,ts}'tree--noreporttree -L 2 --noreport > dir-tree.txttree -C | sed 's/\x1b\[[0-9;]*m//g' > clean.txt-Cnl-a