【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 选项限制输出,或将输出保存为文件后下载查看
相关推荐
watermelonoops1 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
远游客07135 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<5 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟5 小时前
centos-stream9系统安装docker
linux·docker·centos
超爱吃士力架5 小时前
邀请逻辑
java·linux·后端
cominglately8 小时前
centos单机部署seata
linux·运维·centos
魏 无羡8 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse8 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
木子Linux8 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算