直接安装 tree 命令即可,Debian/Ubuntu 用 sudo apt install tree,RHEL/CentOS/Fedora 用 sudo dnf install tree 或 sudo yum install tree,Arch 用 sudo pacman -S tree;勿用 pip 安装同名 Python 库。

Linux 没有 tree 命令怎么办
直接装,别折腾替代方案。绝大多数 Linux 发行版默认不带 tree,不是它不重要,是它属于“增强型工具”,不在最小化安装列表里。
常见错误现象:command not found: tree,一查 which tree 或 type tree 确实没这个命令——这不是环境变量问题,是压根没装。
- Debian/Ubuntu 系:运行
sudo apt update && sudo apt install tree - RHEL/CentOS/Fedora 系:用
sudo dnf install tree(Fedora 22+)或sudo yum install tree(旧版) - Arch Linux:
sudo pacman -S tree
注意:别用 pip install tree 或其他 Python 包——那是另一个同名但完全无关的库,不能替代系统命令。
tree 基础用法和关键参数差异
tree 默认只显示当前目录下一级子目录和文件,看起来像“没展开”,其实是它默认深度为 1。很多人以为命令坏了,其实是没传参数。
- 看完整结构:
tree(当前目录)或tree /path/to/dir - 限制深度(防卡死):
tree -L 2只显示两层 - 忽略特定文件:
tree -I "node_modules|.git|__pycache__",多个用竖线分隔,注意引号 - 按修改时间排序:
tree -t;按名称排序(默认):tree -n
性能影响:递归过深或含大量小文件时(比如 node_modules),不加 -L 或 -I 可能卡住几秒甚至更久,终端无响应不是崩溃,是真在遍历。
替代方案:没权限装 tree 时怎么凑合
如果你在受限环境(如某些容器、CI 节点、他人服务器)无法执行 sudo,又必须看树形结构,find 是最可靠 fallback。
- 简单树形(不带缩进线):
find . -print | sed 's;[^/]*/;|____;g;s;____|; |;g' - 带层级缩进(较清晰):
find . -print | awk '{for(i=1;i<nf fs="/"></nf>
注意:ls -R 不是替代品——它按目录分块输出,没有父子缩进关系,人眼很难对齐层级;du -d 1 只显示大小和一层深度,不列文件。
中文路径或特殊字符导致显示乱码或报错
tree 本身支持 UTF-8,但乱码通常来自终端或 locale 设置,不是命令问题。
- 先检查:
locale | grep UTF,确保LANG或LC_CTYPE含UTF-8 - 临时修复:
LANG=en_US.UTF-8 tree(或对应你系统的 UTF-8 locale) - 如果路径含换行、制表符等控制字符,
tree会原样输出,可能破坏格式;这时加-N参数可禁用转义,让名字“如实”显示(但可能难读)
容易被忽略的是:某些老旧系统(如 CentOS 6)自带的 tree 版本太低(tree v1.5.3),不支持 -I 的多模式匹配,必须升级或换发行版源。










