做什么

把目录用树形结构打印出来——比 ls -R 直观得多。

sudo apt install tree

常用参数

参数 含义
-L N 限制深度 N 层
-d 只显示目录
-a 显示隐藏文件
-f 显示完整路径
-h 人类友好大小
-s 显示文件大小
--filelimit N 文件数超 N 的目录折叠
-I "pattern" 排除匹配的(如 node_modules
-P "pattern" 仅显示匹配的
--gitignore 用 .gitignore 排除

实战

tree                              # 当前目录全树
tree -L 2                         # 只看 2 层深
tree -d                           # 只看目录
tree -L 2 -I 'node_modules|.git'  # 排除常见目录
tree /etc/nginx                   # 看某目录的结构
tree --gitignore                  # 按 .gitignore 排除
tree -h --du                      # 显示大小(du 风格汇总)

配 grep 用

# 看 Python 项目里所有的 .py 树
tree -L 3 -P "*.py" --prune

没装 tree 怎么办

find . | sed -e "s/[^-][^\/]*\//  /g" -e "s/^  //" -e "s/-/|/"

但这远不如 tree 优雅——生产服务器通常没装 tree,去 apt install 一下值得。