tree
是一个递归的目录列表程序,它可以生成一份文件和目录的深度缩进列表。无论何时你需要查看目录和子目录的结构,tree
命令就是你需要的工具。tree
命令还能够列出仅目录,隐藏文件,包括文件路径,根据级别列出文件和目录,列出具有权限的文件,并获取每个文件的文件大小和修改情况。
tree
命令几乎在所有的Linux发行版中都可以使用,包括 Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora 和 Raspbian。在一些默认没有安装tree
的Linux发行版中,我们可以通过包管理器来进行安装。
在Debian,Ubuntu 或 Raspbian上,你可以使用如下的命令进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install tree
对于使用Alpine的用户,可以使用apk进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo apk add tree
如果你在使用RedHat(RHEL)、CentOS 7、或者 Fedora,你可以使用yum进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install tree
对于CentOS 8+或者其他使用了dnf工具的版本,可以使用如下命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install tree
在Arch Linux 或者 Kali Linux上,你需要使用pacman进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S tree
tree
命令的基本语法如下:
tree [参数]... [目录]...
在这个语法中,“[参数]…” 表示可以接受一或多个可选参数, “[目录]…” 表示可以接受一或多个目录名。如果没有指定目录名,那么就会使用当前所在目录。
以下是tree
命令中一些常用选项的说明:
选项 | 详细说明 |
---|---|
-a | 显示所有文件和目录。 |
-d | 仅显示目录。 |
-f | 在每个文件或目录前,都显示完整的相对路径。 |
-i | 不显示缩进和线条,只显示文件和目录的名称。 |
-l | 按照文件和目录的修改时间进行排序,最近的在前面。 |
-r | 将文件或目录的显示顺序反转。 |
-s | 显示文件和目录的大小。 |
-x | 完全地展开目录树,包括那些符号链接到其他部分的目录。 |
使用 tree
命令而不带任何的参数,能够输出当前目录(也就是你执行这个命令的位置)的结构。
[linux@bashcommandnotfound.cn ~]$ tree
如果你想让 tree
命令显示所有的文件和目录,包括隐藏文件,你可以使用-a
选项。
[linux@bashcommandnotfound.cn ~]$ tree -a
如果你只对目录的层级结构感兴趣,而不想在输出中看到任何文件,你可以使用 -d
选项。
[linux@bashcommandnotfound.cn ~]$ tree -d
tree
命令默认并不会显示文件或者目录的大小,但是通过 -s
选项,你就能让 tree
在每个文件名和目录名的后面显示它们的大小。
[linux@bashcommandnotfound.cn ~]$ tree -s
如果你想让 tree
命令根据文件和目录的修改时间进行排序,而不是根据名字进行排序,那么你可以使用 -t
选项。
[linux@bashcommandnotfound.cn ~]$ tree -t
在某些情况下,你可能只对某一层级的目录结构感兴趣,这时候你可以使用 -L
选项来指定 tree
只显示到某一层级。例如,下面的命令让 tree
只显示到三层目录:
[linux@bashcommandnotfound.cn ~]$ tree -L 3
如果你只想列出特定类型的文件,那么你可以使用-P
选项来指定一个模式。例如,下面的命令只会显示所有的.txt
文件及其所在的目录:
[linux@bashcommandnotfound.cn ~]$ tree -P "*.txt"
相反,如果你想排除特定类型的文件,那么你可以使用-I
选项来指定一个模式。例如,下面的命令将忽视所有的.txt
文件:
[linux@bashcommandnotfound.cn ~]$ tree -I "*.txt"
tree
命令可以通过-o
参数将结果输出到一个文件中,比如:
[linux@bashcommandnotfound.cn ~]$ tree -o output.txt
此命令将当前目录结构输出到名为"output.txt"的文件中。
你可以使用-p
选项让 tree
在每个文件名和目录名的前面显示它们的权限,格式与 ls -l
命令相同。
[linux@bashcommandnotfound.cn ~]$ tree -p
-S
参数可以使文件和目录按大小排序,如下所示:
[linux@bashcommandnotfound.cn ~]$ tree -S
使用 -E
选项会使 tree
在列出目录时包含空目录。例如:
[linux@bashcommandnotfound.cn ~]$ tree -E
使用 -n
选项可以让 tree
不展开目录,只显示顶层的内容。例如:
[linux@bashcommandnotfound.cn ~]$ tree -n
通过 -I
参数,我们可以指定要忽略哪些目录。例如,下面的命令将忽略名为 “temp” 的目录:
[linux@bashcommandnotfound.cn ~]$ tree -I "temp"
使用 -D
选项可以使 tree
按照最后修改时间排序:
[linux@bashcommandnotfound.cn ~]$ tree -D
-C
参数使 tree
命令添加颜色以区分文件和目录:
[linux@bashcommandnotfound.cn ~]$ tree -C
tree
命令来查看远程主机的目录结构,因为 tree
命令只能查询本地磁盘上的文件和目录。/
目录)中运行 tree
命令可能会需要很长时间,并且输出会非常的长。