tree命令非Linux默认内置,需先按系统类型安装:Debian/Ubuntu用apt install tree,RHEL/CentOS 7用yum install tree,8+及Fedora用dnf install tree,Arch用pacman -S tree;安装后执行tree --version验证。

tree 命令不是所有 Linux 发行版默认安装的,直接运行 tree 很可能报 command not found —— 先确认是否已装,再谈怎么用。
检查并安装 tree 命令
不同包管理器安装命令不同,别硬试 apt install tree 就完事,得看系统类型:
- Debian/Ubuntu 系:运行
apt update && apt install tree - RHEL/CentOS 8+ / Fedora:用
dnf install tree - RHEL/CentOS 7 及更早:用
yum install tree - Arch Linux:用
pacman -S tree
装完执行 tree --version 确认输出版本号,才算真正就位。
基础用法:显示当前目录层级
不加任何参数的 tree 会递归列出当前目录下所有子目录和文件,按缩进+符号可视化层级。但默认会钻进所有子目录(包括 node_modules、.git),实际项目里基本不可用。
- 加
-L 2限制只显示两层深度,适合快速扫一眼结构 - 加
-d只显示目录(不列文件),配合-L更清爽 - 加
-a才能显示以.开头的隐藏目录(如.git、.vscode) - 想跳过某个大目录?用
-I 'node_modules|dist'(注意大小写敏感,正则语法)
例如:查看不含 node_modules 和 build 的三层结构:tree -L 3 -I 'node_modules|build'
导出为文件或适配终端宽度
终端窗口窄时,tree 默认会自动换行截断长文件名,导致缩进错乱、结构难读。这不是 bug,是它默认按 80 列渲染。
- 用
-T参数启用“宽屏模式”,让tree自动适配当前终端宽度(推荐始终加上) - 导出为文本存档:用重定向
tree -T -L 3 > dir-structure.txt - 导出为 HTML(需支持):部分版本支持
-H . -o index.html,但依赖本地 web 服务才能正常打开链接
注意:-T 在较老版本(如 CentOS 7 自带的 tree 1.6.x)中不支持,得先升级到 1.8.0+。
常见错误与绕过技巧
执行 tree 报错 Argument list too long,通常是因为某层目录下文件数爆炸(比如日志目录、缓存目录),tree 构造内部参数时超限。
- 不是加
-f或改选项就能解决,得先用-I过滤掉可疑目录 - 如果连
tree -d都卡住,说明目录结构本身异常(如存在循环软链),可加-o输出到文件再查,或改用find . -maxdepth 3 -type d | sort | sed 's/[^-][^/]*/ |/g;s/|$//' | less手动模拟 -
tree不支持 glob 模式匹配路径(如tree src/**/index.js),那是 shell 的事,tree只接受目录路径作为输入
真正容易被忽略的是:tree 对符号链接的处理默认不跟随(-L 不影响软链目标深度),若要展开软链指向的目录,必须显式加 -l;但生产环境慎用,可能意外进入系统路径或造成无限递归。


















