【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 选项限制输出,或将输出保存为文件后下载查看
相关推荐
山河君10 分钟前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维15 分钟前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源17 分钟前
Elasticsearch-linux环境部署
linux·elasticsearch
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq7 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮8 小时前
Linux 使用中的问题
linux·运维
dsywws9 小时前
Linux学习笔记之vim入门
linux·笔记·学习