tree 是什么
tree 以树状图递归展示目录结构:每一层用缩进与连接线表示层级,目录后带斜杠。它能限制深度、只看目录、显示体积,也能排除指定的模式。写交接文档、评审项目结构、盘点服务器目录时,一张结构图比罗列文件名清楚得多。多数发行版需要单独安装这个包。
基本信息
| 用途 | 树形展示目录结构,支持限深、过滤与体积统计 |
|---|---|
| 语法 | tree [选项] [目录] |
| 所属软件包 | tree(多数发行版默认未安装) |
| 常用选项 | -L 深度、-d 只看目录、-a 含隐藏文件、-I 排除模式、--du 显示占用、-f 显示完整路径、-J 输出 JSON |
典型使用场景
- 写文档:给项目或站点目录生成结构清单,直接贴进交接文档
- 评审与巡检:快速确认目录层级是否与设计一致,有没有多余目录
- 容量定位:用 --du 找出占空间最多的子树,再决定往哪儿深入
- 配置盘点:只看 .conf 类文件,快速盘点某服务涉及的配置位置
- 自动化消费:用 -J 输出 JSON,交给脚本解析目录结构
常用示例
常用示例
tree -L 2 /etc/nginx # 限两层,避免输出爆炸
tree -d -L 3 /data # 只看目录结构
tree -ah --du /srv/site | head -50 # 含隐藏文件与体积
tree -I 'node_modules|.git|cache' /data/app # 排除指定模式
tree -P '*.conf' -L 3 /etc/app # 只显示匹配的文件
tree -f -L 2 /data/app > structure.txt # 带完整路径导出清单
tree -J -L 2 /data/app > structure.json # 输出 JSON 供脚本消费常用选项对照
| 选项 | 作用 | 使用建议 |
|---|---|---|
| -L 深度 | 限制递归层数 | 线上目录务必带上,防止输出失控 |
| -d | 只列目录 | 看整体结构时最清爽 |
| -a | 包含隐藏文件 | 注意 .env、.git 等敏感内容会被展示出来 |
| -I 模式 | 排除匹配的条目 | 多个模式用竖线分隔,记得加引号 |
| --du | 显示目录累计占用 | 定位大目录效率很高 |
| -J / -X | 输出 JSON 或 XML | 需要脚本处理结构时使用 |
| -P 模式 | 只显示匹配的条目 | 盘点某类配置或某类后缀文件 |
输出想给人看就用默认格式,想给程序读就用 -J 输出 JSON。把结构清单纳入文档时,建议连同生成命令一起记录,便于日后比对变化。
对线上目录不加深度限制执行 tree,可能产生几十万行输出并伴随大量磁盘读取。先估规模,或直接从浅层开始逐级展开。