首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux命令—tree

linux命令—tree

原创
作者头像
刘俊辉个人博客
发布2025-06-18 08:34:40
发布2025-06-18 08:34:40
17200
代码可运行
举报
文章被收录于专栏:Linux命令Linux命令
运行总次数:0
代码可运行

命令简介

tree 是一个实用的 Linux 目录列表工具,以树形结构递归显示文件和目录,直观展示层级关系。它支持自定义过滤、排序、输出格式等功能,是管理文件系统的利器。

安装tree

大多数 Linux 系统默认未安装 tree,需手动安装,其他平台同名:

代码语言:javascript
代码运行次数:0
运行
复制
#Debian/Ubuntu
sudo apt install tree
#debian:https://mirrors.aliyun.com/debian/pool/main/t/tree/
#Ubuntu:https://mirrors.aliyun.com/ubuntu/pool/universe/t/tree

#RedHat/CentOS
sudo yum install tree
#可以使用wget命令根据rpm地址下载后安装
#rhel7/centos7:https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
#rhel8/centos8:https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/Packages/tree-1.7.0-15.el8.x86_64.rpm
#rhel9/centos stream9:https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/Packages/tree-1.8.0-10.el9.x86_64.rpm

#Arch/Manjaro
sudo pacman -S tree
#Manjaro:https://mirrors.aliyun.com/manjaro/pool/sync/tree-2.2.1-1-x86_64.pkg.tar.zst
#Arch:https://mirrors.aliyun.com/archlinux/pool/packages/tree-2.2.1-1-x86_64.pkg.tar.zst

用法

tree命令的语法格式如下

代码语言:javascript
代码运行次数:0
运行
复制
tree [选项] [目标目录]
#选项可选
#目标目录可选

tree命令的常用选项及说明如下

代码语言:javascript
代码运行次数:0
运行
复制
------- 列表选项 -------
-a            #显示所有文件和目录
-d            #显示目录名称而非文件
-l            #如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
-f            #在每个文件或目录之前,显示完整的相对路径名称
-x            #将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外
-L level      #限制目录显示层级
-R            #不要列出与给定模式匹配的文件
-P pattern    #<范本样式> 只显示符合范本样式的文件和目录名称
-I pattern    #不列出与给定模式匹配的文件
--ignore-case #模式匹配时忽略大小写
--matchdirs   #在-P模式匹配中包含目录名
--noreport    #关闭树列表末尾的文件/目录计数
--charset X   #将字符集X用于终端/HTML和缩进行输出
--filelimit   #请勿下载包含超过个文件的目录
--timefmt <f> #根据格式<f>打印和格式化时间
-o filename   #输出到文件而不是输出到屏幕
--du          #打印目录大小
--prune       #从输出中删除空目录
-------- 文件选项 ---------
-q            #用“?”号取代控制字符,列出文件和目录名称
-N            #直接列出文件和目录名称,包括控制字符
-Q            #用双引号引用文件名
-p            #列出权限标示
-u            #列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
-g            #列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
-s            #列出文件和目录大小
-h            #以更易读的方式打印大小
--si          #类似于-h,但使用国际单位制(1000的幂)
-D            #列出文件或目录的更改时间
-F            #在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号
--inodes      #打印每个文件的索引节点号
--device      #打印每个文件所属的设备ID号
------- 排序选项 -------
-v            #按字母数字对文件进行排序
-t            #用文件和目录的更改时间排序
-c            #按最后的更改时间对文件进行排序
-U            #天下黄河
-r            #反转排序顺序
--dirsfirst   #在文件之前列出目录(-U禁用)
--sort X      #选择排序:名称、版本、大小、时间、时间
------- 图形选项 ------
-i            #不以阶梯状列出文件和目录名称
-A            #使用ASNI绘图字符显示树状图而非以ASCII字符组合
-S            #使用CP437(控制台)图形压痕线打印
-n            #始终关闭着色(-C覆盖)
-C            #在文件和目录清单加上色彩,便于区分各种类型
------- XML / HTML / JSON选项 -------
-X            #打印出XML表示形式的树
-J            #打印出JSON表示形式的树
-H baseHREF   #打印出以baseHREF为顶部目录的HTML格式
-T string     #将默认HTML标题和H1标头替换为字符串
--nolinks     #关闭HTML输出中的超链接
---- 杂项选项 ----
--version     #输入版本信息
--help        #打印使用帮助信息
--            #选项处理终止符

命令案例场景

1.基础用法

显示当前目录的树状结构

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree
.
├── anaconda-ks.cfg
├── dir1
│   ├── file1.txt
│   └── subdir
└── dir2
    └── report.pdf

3 directories, 2 files

显示指定目录的结构

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree /var/log/
/var/log/
├── anaconda
│   ├── anaconda.log
│   ├── dbus.log
│   ├── lvm.log
│   ├── packaging.log
│   ├── program.log
├── audit
│   └── audit.log
├── boot.log
├── btmp
├── chrony
├── vmware-vmusr-root.log
└── wtmp

3 directories, 10 files

2.核心参数应用场景

层级控制(-L)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -L 1 #仅显示1级目录
.
├── anaconda-ks.cfg
├── dir1
└── dir2

2 directories, 1 files

隐藏文件显示(-a)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -a #显示以.开头的隐藏文件
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cache
├── .config
├── .cshrc
├── dir1
│   ├── file1.txt
│   └── subdir
├── dir2
│   └── report.pdf
├── .local
│   ├── share
│   └── state
├── .ssh
├── .tcshrc
└── .Xauthority

9 directories, 9 files

仅显示目录及子目录(-d)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -d
.
├── dir1
│   └── subdir
└── dir2

3 directories

显示文件权限、所有者和所有组(-p、-u、-g)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -p -u -g #或使用tree -pug
.
├── [-rw------- root     root    ]  anaconda-ks.cfg
├── [drwxr-xr-x root     root    ]  dir1
│   ├── [-rw-r--r-- root     root    ]  file1.txt
│   └── [drwxr-xr-x root     root    ]  subdir
└── [drwxr-xr-x root     root    ]  dir2
    └── [-rw-r--r-- root     root    ]  report.pdf

3 directories, 2 files

完整路径显示(-f)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -f
/root
├── /root/anaconda-ks.cfg
├── /root/dir1
│   ├── /root/dir1/file1.txt
│   └── /root/dir1/subdir
└── /root/dir2
    └── /root/dir2/report.pdf

3 directories, 3 files
#以上案例全部是在/root目录下操作,没有写目录名,则用.代表当前文件夹

排除过滤(-I)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -I "subdir|*.pdf" #排除subdir和.pdf文件
.
├── anaconda-ks.cfg
├── dir1
│   └── file1.txt
└── dir2

2 directories, 2 files

输出重定向(-o)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -o structure.txt #将结果保存到文件

#验证
[root@blog ~]# cat structure.txt
.
├── anaconda-ks.cfg
├── dir1
│   ├── file1.txt
│   └── subdir
├── dir2
│   └── report.pdf
└── structure.txt

3 directories, 4 files

按照更改时间排序(-t)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -t #最新修改的文件排在最后
.
├── anaconda-ks.cfg
├── dir1
│   ├── subdir
│   └── file1.txt
├── dir2
│   └── report.pdf
└── structure.txt

3 directories, 4 files

以易读的格式输出文件目录(-h)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -h
.
├── [ 1.5K]  anaconda-ks.cfg
├── [   37]  dir1
│   ├── [    0]  file1.txt
│   └── [    6]  subdir
├── [   24]  dir2
│   └── [    0]  report.pdf
└── [  469]  structure.txt

3 directories, 4 files

生成JSON格式列表(-J)

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -J
[{"type":"directory","name": ".","contents":[
  {"type":"file","name":"anaconda-ks.cfg"},
  {"type":"directory","name":"dir1","contents":[
    {"type":"file","name":"file1.txt"},
    {"type":"directory","name":"subdir","contents":[
    ]}
  ]},
  {"type":"directory","name":"dir2","contents":[
    {"type":"file","name":"report.pdf"}
  ]},
  {"type":"file","name":"structure.txt"}
]},
  {"type":"report","directories":3,"files":4}
]

3.进阶应用场景

磁盘空间分析

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree --du -h #显示目录磁盘使用情况
.
├── [ 1.5K]  anaconda-ks.cfg
├── [   43]  dir1
│   ├── [    0]  file1.txt
│   └── [    6]  subdir
├── [   24]  dir2
│   └── [    0]  report.pdf
└── [  469]  structure.txt

  6.0K used in 3 directories, 4 files

结合grep过滤内容

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -f /root | grep txt #筛选含txt的路径
│   ├── /root/dir1/file1.txt
└── /root/structure.txt

快速定位大文件

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -if /boot | grep -E '.*\.[a-zA-Z0-9]{3,}$' | xargs du -h | sort -rh | head -n 10 #使用正则过滤扩展名至少3字符的文件
183M    /boot/initramfs-0-rescue-c7b614f13cae4850bfc895f5f2c2917a.img
59M     /boot/initramfs-5.14.0-570.12.1.el9_6.x86_64.img
2.5M    /boot/efi/EFI/redhat/grubx64.efi
2.3M    /boot/grub2/fonts/unicode.pf2
940K    /boot/efi/EFI/redhat/shimx64-redhat.efi
940K    /boot/efi/EFI/redhat/shimx64.efi
940K    /boot/efi/EFI/redhat/shim.efi
940K    /boot/efi/EFI/BOOT/BOOTX64.EFI
840K    /boot/efi/EFI/redhat/mmx64.efi
92K     /boot/efi/EFI/BOOT/fbx64.efi

生成网站目录结构图

代码语言:javascript
代码运行次数:0
运行
复制
[root@blog ~]# tree -H /root -o site_map.html --charset utf-8

需要将html下载本地,使用浏览器打开效果如下图

注意事项

  1. 善用Tab键补全: 输入路径时,按Tab键可以让系统自动补全目录名或文件名,避免拼写错误并提高效率
  2. 超大目录建议配合-L参数限制遍历层数
  3. 在脚本中使用时建议添加--noreport参数禁用统计信息
  4. 使用 tree | grep "files"可以显示文件总数,输出末尾会统计
  5. 通过man tree查看完整手册

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令简介
  • 安装tree
  • 用法
    • tree命令的语法格式如下
    • tree命令的常用选项及说明如下
  • 命令案例场景
    • 1.基础用法
      • 显示当前目录的树状结构
      • 显示指定目录的结构
    • 2.核心参数应用场景
      • 层级控制(-L)
      • 隐藏文件显示(-a)
      • 仅显示目录及子目录(-d)
      • 显示文件权限、所有者和所有组(-p、-u、-g)
      • 完整路径显示(-f)
      • 排除过滤(-I)
      • 输出重定向(-o)
      • 按照更改时间排序(-t)
      • 以易读的格式输出文件目录(-h)
      • 生成JSON格式列表(-J)
    • 3.进阶应用场景
      • 磁盘空间分析
      • 结合grep过滤内容
      • 快速定位大文件
      • 生成网站目录结构图
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档