Linux系统文件目录:tree 命令查看目录树的常用方法
2026/7/6 18:06:29 网站建设 项目流程

适合 Linux 命令入门 · 项目结构查看 · 文件目录整理
关键词:tree、目录树、Linux命令、文件过滤、目录层级


tree命令用于以树状结构展示目录和文件,是查看项目结构、整理文件层级、输出目录清单时非常实用的工具
日常使用时,最常用的能力主要有两个:按层级展示目录结构按规则过滤或排序内容。其中,控制显示深度最常用的参数是-L N


一、tree 命令是什么

核心结论:tree 的作用就是把目录和文件按照层级关系“画成一棵树”,让目录结构比普通的 ls 输出更直观。

tree是 Linux 中用于展示目录结构的命令。相比ls只能列出当前目录内容,tree可以递归展示子目录,让项目结构一目了然。

例如,一个项目目录可能包含源码目录、配置文件、构建目录、日志目录等。使用tree后,可以清楚看到每个目录下面还有哪些子目录和文件。

它特别适合以下场景

场景作用
查看项目结构快速了解一个项目的目录层级
写文档把目录结构复制到 README 或博客中
排查文件位置查找某类文件分布在哪些目录下
过滤无关目录排除.gitnode_modulesbuild等目录
导出目录清单将目录结构保存为txtmd文件

二、tree 命令的安装方式

2.1 Ubuntu / Debian 系统安装

在 Ubuntu 或 Debian 系统中,可以使用apt安装。

# 更新软件包索引,确保能够获取最新的软件包信息sudoaptupdate# 安装 tree 命令,并使用 -y 自动确认安装sudoapt-yinstalltree

安装完成后,可以通过下面的命令验证是否安装成功。

# 查看 tree 命令版本,验证 tree 是否可用tree--version

2.2 CentOS / RHEL 系统安装

在 CentOS 或 RHEL 系统中,可以使用yumdnf安装。

# 在较老版本 CentOS 中使用 yum 安装 treesudoyum-yinstalltree# 在较新版本 RHEL / CentOS Stream / Fedora 中使用 dnf 安装 treesudodnf-yinstalltree

三、tree 命令的基本用法

3.1 查看当前目录结构

# 在当前目录下输出完整目录树tree

执行后,tree会从当前目录开始递归展示文件和目录。

示例输出如下:

.├── README.md ├── src │ ├── main.c │ └── utils.c ├── include │ └── utils.h └── build └── main

其中:

符号含义
.当前目录
├──当前层级中的一个普通分支
└──当前层级中的最后一个分支
表示当前目录还有后续分支

3.2 查看指定目录结构

# 查看 path 目录下的目录树tree path/

这里的path/可以替换成实际目录路径,例如:

# 查看 /etc 目录下的目录树tree /etc

不过,像/etc/usr/var这类目录内容较多,直接执行可能会输出大量内容。因此在大目录中更推荐配合-L限制深度。


四、使用 -L 控制显示深度

重点理解:-L N 用于限制 tree 展示的目录层级,是日常使用 tree 时最重要、最常用的参数。

4.1 基本语法

# 只展开到第 1 层,也就是只展示当前目录的直接子项tree-L1# 只展开到第 2 层,也就是展示当前目录、子项以及子项的子项tree-L2# 对指定目录展开 3 层tree-L3path/

4.2 深度规则说明

tree -L N中的N表示最多展示到第几层。

命令展示范围适用场景
tree -L 1当前目录 + 第一层子项快速看目录入口
tree -L 2当前目录 + 子项 + 子项的子项查看项目大致结构
tree -L 3展开到第三层查看较完整的项目目录
tree -L 4展开到第四层适合结构不太大的项目

起始目录可以理解为第 0 层,-L 1展示第 0 层和第 1 层,-L 2再多展示一层

例如:

# 查看当前项目的二级目录结构tree-L2

这类命令非常适合用来查看项目骨架,而不会把所有深层文件全部刷出来。


五、tree 常用参数说明

5.1 常用选项清单

参数作用示例
-a显示隐藏文件tree -a
-d只显示目录,不显示文件tree -d
-f显示完整路径tree -f
-h以人类可读方式显示文件大小tree -h
--du显示目录聚合大小tree -h --du
--dirsfirst目录排在文件前面tree --dirsfirst
--sort=size按文件大小排序tree --sort=size
-t按修改时间排序tree -t
-U不排序,按目录原始顺序输出tree -U
-I排除匹配项`tree -I 'node_modules.git’`
-P只显示匹配项tree -P '*.c'
--prune过滤后裁掉空目录tree -I 'build' --prune
-o将结果输出到文件tree -o tree.txt
--filelimit限制单个目录中文件数量tree --filelimit 200
-C强制彩色输出tree -C
-n禁用彩色输出tree -n

5.2 隐藏文件与目录显示

Linux 中,以.开头的文件或目录默认属于隐藏项,例如.git.env.vscode

# 显示普通文件、目录以及隐藏文件tree-a

如果只想看隐藏项是否存在,可以配合层级限制:

# 展示当前目录下第一层内容,包括隐藏文件tree-a-L1

5.3 只显示目录骨架

# 只显示目录,不显示文件tree-d

如果只想看项目结构,而不关心具体文件,可以使用:

# 只显示三级目录骨架tree-d-L3

-d很适合用于分析项目模块划分,因为它会把大量文件隐藏掉,只保留目录层级


5.4 显示文件大小与目录总大小

# 显示文件大小,并使用 K、M、G 等单位展示tree-h

如果希望目录也显示聚合大小,可以加入--du

# 显示文件大小,并统计目录总占用tree-h--du

对于大项目,可以限制层级:

# 查看当前目录二级范围内的大小分布tree-L2-h--du

5.5 排序显示

# 按文件修改时间排序tree-t
# 按文件大小排序tree--sort=size
# 不进行排序,按照文件系统原始顺序输出tree-U

常见排序方式如下:

排序方式命令说明
按名称排序默认行为最常见
按修改时间排序tree -t适合找最近修改文件
按大小排序tree --sort=size适合排查大文件
不排序tree -U速度可能更快

六、tree 的过滤用法

6.1 使用 -I 排除文件或目录

注意:-I 表示 ignore,也就是排除匹配项。多个匹配模式之间可以使用竖线 | 分隔,并且建议用引号包起来,避免被 Shell 提前解析。
# 排除 .git、node_modules、dist、build 目录tree-I'.git|node_modules|dist|build'

常见项目中,下面这些目录经常需要排除:

目录或文件说明
.gitGit 版本管理目录
node_modules前端依赖目录,通常很大
dist打包输出目录
build编译生成目录
__pycache__Python 缓存目录
.ideaJetBrains 系列 IDE 配置目录
.vscodeVS Code 配置目录

6.2 使用 -P 只显示匹配项

-P用于只显示符合模式的文件或目录。

# 只显示 .c 文件tree-P'*.c'
# 只显示 Markdown 文件tree-P'*.md'

如果使用-P后出现很多空目录,可以配合--prune

# 只显示 Markdown 文件,并裁掉空目录tree-P'*.md'--prune

6.3 使用 --prune 裁掉空目录

当使用-I-P过滤后,某些目录可能已经没有可显示内容,但仍然被保留下来。此时可以使用--prune自动裁剪空目录。

# 排除常见无关目录,并自动裁掉空目录分支tree-I'.git|node_modules|dist|build'--prune

--prune的作用是让输出更干净,特别适合写文档或博客时展示项目结构


七、典型场景示例

7.1 查看项目二级结构

# 查看当前项目二级目录结构,目录优先显示,并排除常见构建产物tree-L2--dirsfirst-I'node_modules|dist|build|.git'--prune

这个命令适合查看前端项目、后端项目或普通工程项目的大体结构。

参数含义如下:

参数含义
-L 2只展开到第二层
--dirsfirst目录排在文件前
-I排除指定文件或目录
--prune裁掉过滤后为空的目录

7.2 只看目录骨架

# 只显示目录结构,并展开到第三层tree-d-L3

这个命令适合分析项目模块,不会被大量文件干扰。


7.3 查看文件大小

# 以人类可读方式显示文件大小,并统计目录总占用tree-L2-h--du

其中:

参数含义
-h使用 K、M、G 等单位显示大小
--du显示目录聚合大小
-L 2限制展示深度,避免输出过多

7.4 打印完整路径并导出结果

# 打印完整路径,排除 .git 和 __pycache__,并把结果保存到 tree.txttree-L2-f-I'.git|__pycache__'--prune-otree.txt

这个命令适合把目录结构保存下来,后续可以粘贴到文档、博客或项目说明中。


7.5 限制大目录输出数量

# 当某个目录中文件过多时,限制每个目录最多展示 200 个文件tree-L2--filelimit200

在大目录下使用 tree 时,一定要优先加-L--filelimit,否则可能输出非常多内容


7.6 配合 less 查看超宽输出

# 使用 less 查看 tree 输出,并用 -S 禁止自动换行tree-L2|less-S

这里的less -S表示不自动折行。如果某一行太长,可以用键盘左右方向键横向滚动查看。


八、常见问题与排障

8.1 tree 输出太多怎么办

优先使用下面几种方式控制输出规模:

# 限制显示深度tree-L2
# 排除无关目录tree-I'node_modules|dist|build|.git'
# 限制单个目录最大展示文件数量tree--filelimit200

大目录不要直接运行tree,否则很容易刷屏,甚至影响终端使用体验


8.2 -I 和 -P 为什么要加引号

-I-P后面的模式经常会用到*?|等通配符。如果不加引号,Shell 可能会提前把这些字符解析掉,导致tree收到的规则不是你想要的规则。

推荐写法:

# 推荐写法:过滤规则使用引号包起来tree-I'node_modules|dist|build|.git'

不推荐写法:

# 不推荐写法:没有引号时,通配符可能被 Shell 提前展开tree-Inode_modules|dist|build|.git

8.3 为什么过滤后还有空目录

这是因为-I-P只负责过滤内容,不一定自动删除空目录分支。

解决方法是加上--prune

# 过滤后自动裁掉空目录tree-I'node_modules|dist|build|.git'--prune

8.4 如何只统计目录数量

tree输出末尾通常会自动显示统计信息,例如:

# 只显示目录,并在末尾输出目录数量统计tree-d

输出末尾可能类似:

12directories

如果显示文件和目录,末尾可能类似:

12directories,38files

九、常用命令速查表

需求命令
查看当前目录树tree
只展开一层tree -L 1
展开二级项目结构tree -L 2
只显示目录tree -d
显示隐藏文件tree -a
目录排在文件前tree --dirsfirst
排除指定目录`tree -I 'node_modules.git’`
过滤后裁掉空目录`tree -I 'node_modules.git’ --prune`
只显示指定文件tree -P '*.md' --prune
显示文件大小tree -h
显示目录总大小tree -h --du
输出到文件tree -o tree.txt
使用分页器查看tree -L 2 | less -S

十、总结

总结:tree 命令的核心作用是把文件和目录按层级关系展示出来。日常使用时,重点掌握 -L 控制深度、-I 排除内容、-P 匹配内容、--prune 裁剪空目录、-d 只看目录骨架即可。

对于普通使用场景,最推荐记住这一条命令

# 查看项目二级结构,目录优先显示,排除常见无关目录,并裁掉空目录tree-L2--dirsfirst-I'node_modules|dist|build|.git|__pycache__'--prune

它适合大多数项目结构查看、文档编写和目录整理场景。掌握这条命令后,再根据需要添加-a-d-h--du-o等参数,就能覆盖绝大多数tree的实际使用需求。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询