【linux004】目录操作命令篇 - tree 命令

文章目录

tree 命令在 Linux 和 Unix 系统中是一个非常有用的工具,它用于以树状图的形式递归地列出目录的内容。这对于快速查看目录结构非常有帮助

1、基本用法

在终端中,只需输入 tree 后跟上想要列出其内容的目录路径(如果不指定路径,则默认为当前目录)。例如:

bash 复制代码
tree
#或者
tree [选项] [目录]

2、常见选项

功能

  • 递归列出目录内容:tree 会递归地列出指定目录及其所有子目录的内容。
  • 可视化目录结构:通过树状图的形式,使得目录结构一目了然。
  • 支持多种选项:通过不同的选项,可以控制输出的格式、深度等。

主要参数选项

  • -a--all-files:显示所有文件,包括以点.开头的隐藏文件。
  • -d:仅列出目录,不显示文件。
  • -f:在每个文件或目录前显示其完整路径。
  • -i--inodes:不显示文件或目录的链接信息。
  • -L level:限制目录显示的深度为指定的级别。
  • -n:直接以 ASCII 字符显示,而不是使用图形字符。
  • -P pattern:仅显示匹配指定模式的文件或目录。
  • -p:在每个文件或目录后显示其权限(以类似 ls -l 的格式)。
  • -s:在每个文件或目录后显示其大小。
  • -t:按文件或目录的修改时间排序显示。
  • -u:显示文件和目录的拥有者。
  • -v:在列出每个目录时,显示其版本控制信息(如果可用)。
  • --dirsfirst:在列出文件之前先列出目录。
  • --noreport:不显示最后关于文件/目录总数的报告。
  • --charset charset:使用指定的字符集来显示非ASCII字符。

3、举例

-a 选项举例:

bash 复制代码
# 列出当前目录及其所有子目录的内容(包括隐藏文件):
tree -a

-d 选项举例:

bash 复制代码
# 仅列出目录,不显示文件,并限制深度为2:
tree -d -L 2	

-L 选项举例:

bash 复制代码
# -L level:限制树的深度,level 指定显示的层级深度
tree -L 2

-f 选项举例:

bash 复制代码
# 显示文件和目录的完整路径。
tree -f

-i 选项举例:

bash 复制代码
# 不使用树形结构(竖线),只显示缩进的文件列表
tree -i	

-n 选项举例:

bash 复制代码
# 不为文件和目录名着色(默认情况下,tree 会对不同类型的文件进行颜色编码)
tree -n

-F 选项举例:

bash 复制代码
# 在每个目录后面添加 /,可执行文件后面添加 *,符号链接后面添加 @。
tree -F

-p 选项举例:

bash 复制代码
# 显示文件和目录的权限。
tree -p

-s 选项举例:

bash 复制代码
# 显示文件和目录的大小(以字节为单位)
tree -s

-t 选项举例:

bash 复制代码
# 按修改时间排序,最近修改的文件和目录列在最前面。
tree -t

-r 选项举例:

bash 复制代码
# 反转排序顺序。
tree -r	

-l 选项举例:

bash 复制代码
# 跟随符号链接,但不会进入符号链接指向的目录
tree -l

--du 选项举例:

bash 复制代码
# 显示每个目录及其子目录的磁盘使用情况(类似于 du 命令)
tree --du

--timefmt format 选项举例:

bash 复制代码
# 自定义显示时间的格式。可以与 -D 或 --time 选项结合使用
tree --timefmt "%Y-%m-%d %H:%M:%S" -D

-Q 选项举例:

bash 复制代码
# 用引号引住文件和目录名称,适用于名称中包含特殊字符的情况
tree -Q

-P pattern 选项举例:

bash 复制代码
# 只显示匹配指定模式的文件和目录。支持通配符如 *、?
tree -P "*.txt"

-I pattern 选项举例:

bash 复制代码
# 忽略与指定模式匹配的文件和目录。也支持通配符
tree -I "*.txt"

--matchdirs 选项举例:

bash 复制代码
# 与 -P 选项结合使用时,默认只匹配文件,使用此选项可同时匹配目录
tree -P "project*" --matchdirs

-o file 选项举例:

bash 复制代码
# 将输出结果保存到指定文件,而不是打印到终端
tree -o output.txt

--noreport 选项举例:

bash 复制代码
# 不显示文件和目录的总计信息
tree --noreport

--charset charset 选项举例:

bash 复制代码
# 指定输出字符集如 ASCII、UTF-8 等
tree --charset ASCII

4、注意事项

注意tree命令是否存在

tree 命令可能不是所有 Linux 发行版的标准部分,如果系统中没有安装,你可以通过包管理器如 apt-get、yum 等来安装它

ubuntu操作系统中可以用如下命令来安装

bash 复制代码
apt-get update
apt-get install -y tree

centos、redhat等操作系统中可以用如下命令来安装

bash 复制代码
yum install -y tree

目录深度限制

  • 如果要查看一个包含大量子目录的目录树,未使用 -L 选项限制深度可能会导致输出过长,难以阅读并且可能影响性能

输出文件处理

  • 当将 tree 命令的输出重定向到文件时,确保你有足够的磁盘空间,特别是在处理大型目录树时。使用 -o 选项将输出保存到文件时,要注意目标文件的大小

处理大目录

  • 在包含大量文件和目录的目录结构中运行 tree 可能会非常耗时且占用大量内存。可以结合 -L 选项或 -P-I 选项来过滤输出,减少负载

符号链接的处理

  • 使用 -l 选项跟随符号链接时要小心,特别是在符号链接可能导致循环引用的情况下。tree 默认不会跟随符号链接以避免这种问题,但如果使用了 -l 选项,注意可能出现的循环或无休止的输出

字符编码

  • tree 输出使用的字符集可能在不同终端上表现不一致,特别是如果终端不支持某些字符集时。可以使用 --charset 选项指定字符集,如 ASCIIUTF-8,以确保输出的兼容性

输出的视觉效果

  • tree 默认输出会包含颜色编码和树形符号,这在终端中很有用,但可能不适合某些输出目的(如保存到文件或用于脚本)。可以使用 -n 选项禁用颜色编码,或结合 -i 选项只显示缩进而不使用树形结构

远程系统使用

  • 在远程系统上使用 tree 时,考虑到网络延迟和带宽限制,尤其是在目录树非常大时,建议使用 -L-P 选项限制输出,或将输出保存为文件后下载查看
相关推荐
大锦终几秒前
【Linux】常用基本指令
linux·运维·服务器·centos
IT项目管理11 分钟前
达梦数据库DMHS介绍及安装部署
linux·数据库
知北游天24 分钟前
Linux:多线程---深入互斥&&浅谈同步
linux·运维·服务器
Gappsong87426 分钟前
【Linux学习】Linux安装并配置Redis
java·linux·运维·网络安全
try2find1 小时前
移动conda虚拟环境的安装目录
linux·运维·conda
码农101号1 小时前
Linux中容器文件操作和数据卷使用以及目录挂载
linux·运维·服务器
PanZonghui2 小时前
Centos项目部署之Nginx 的安装与卸载
linux·nginx
PanZonghui2 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
PanZonghui2 小时前
Centos项目部署之运行SpringBoot打包后的jar文件
linux·spring boot
PanZonghui2 小时前
Centos项目部署之Java安装与配置
java·linux