跳转到内容

tree

tree 以树状结构递归显示目录,用来一眼看清项目布局。它不是 coreutils 的一部分,多数发行版要自己装(apt install tree / dnf install tree)。

Terminal window
tree [选项] [目录]

不指定目录时显示当前目录 默认不显示隐藏文件,末尾会汇总目录数和文件数

选项 说明
-L <层数> 限制递归深度(level),看大项目时几乎必加
-d 只显示目录,不显示文件(directory)
-a 显示隐藏文件(all)
-f 每一项显示完整相对路径
-i 不画树枝线,配合 -f 得到纯路径列表
-I <模式> 排除匹配的项(ignore),多个模式用 `
-P <模式> 只显示匹配的项(pattern)
--gitignore 按 .gitignore 的规则排除
-h 大小转成 K/M/G
--du 目录显示其子项累计大小
-p 显示权限位
-C 强制着色,重定向到文件或管道时也保留
-o <文件> 输出写到文件

1. 看两层结构

Terminal window
tree -L 2

输出:

.
├── assets
├── cs-basics
│ ├── cheatsheet
│ ├── network
│ └── shell
├── latex
├── linux-tools
│ ├── 01-file-ops
│ ├── 02-text-processing
│ └── ...
└── templates
12 directories, 3 files

2. 排除噪声目录

Terminal window
tree -L 2 -I 'node_modules|.git|dist'
tree --gitignore

-I 的模式之间用 | 分隔,用的是通配符不是正则 项目里已经写好 .gitignore 时,--gitignore 省事得多

3. 只看目录骨架

Terminal window
tree -d -L 3

文件太多时先看目录,结构比内容更容易记住

4. 生成纯路径列表

Terminal window
tree -fi -L 2

-i 去掉树枝线,-f 补上路径前缀,结果每行是一条可用的路径 这种输出可以直接喂给别的命令,画着树枝的默认输出不行

5. 带上大小

Terminal window
tree -h --du -L 1

不加 --du 时目录显示的是目录项自身占的空间,不是里面内容的总和 只关心谁占地方,直接用 du 更合适