Linux使用tree命令查看目录树结构
您需要使用名为 tree 的命令。它将以树状格式列出目录内容。它是一个递归目录列表程序,可生成深度缩进的文件列表。当给出目录参数时,tree 会依次列出在给定目录中找到的所有文件和/或目录。在列出找到的所有文件/目录后,tree 将返回列出的文件和/或目录的总数。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 文件管理 |
先决条件 | tree 命令 |
操作系统兼容性 | Alma • Alpine • Arch • Debian • Fedora • Linux • macOS • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • WSL |
预计阅读时间 | 5 分钟 |
Linux 上的 tree 命令安装
默认情况下,tree 命令未安装。输入以下命令,使用yum 命令或 dnf 命令在 RHEL / CentOS / Fedora / Rocky / Alma Linux 上安装:
Debian / Mint / Ubuntu Linux 等用户,输入以下apt-get 命令/ apt 命令安装 tree 命令:
# yum install tree
## CentOS/RHEL 8.x and Fedora user try the dnf command ##
# dnf install tree
$ sudo apt-get install tree
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: tree 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. Need to get 43.0 kB of archives. After this operation, 115 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 tree amd64 1.8.0-1 [43.0 kB] Fetched 43.0 kB in 2s (21.2 kB/s) Selecting previously unselected package tree. (Reading database ... 280613 files and directories currently installed.) Preparing to unpack .../tree_1.8.0-1_amd64.deb ... Unpacking tree (1.8.0-1) ... Setting up tree (1.8.0-1) ... Processing triggers for man-db (2.9.1-1) ...
Apple OS X/macOS,在 macOS 上安装 Homebrew,然后输入以下 brew 命令:
$ brew install tree
Arch Linux 用户,输入 pacman 命令:
$ sudo pacman -Syu tree
OpenSUSE 或 SUSE Linux 用户,输入 zypper 命令安装 tree:
$ sudo zypper in tree
Alpine Linux 用户,使用如下apk 命令安装 tree 命令,使用 tree 命令查看树结构:
# apk add tree
语法 – Linux 查看目录树结构
tree 命令的语法如下:
要以树状格式列出 /etc 文件夹的内容,请输入:
示例输出:
$ tree
$ tree /path/to/directory
$ tree [options]
$ tree [options] /path/to/directory
$ tree /etc
/etc ├── acpi │ ├── asus-keyboard-backlight.sh │ ├── asus-wireless.sh │ ├── events │ │ ├── asus-keyboard-backlight-down │ │ ├── asus-keyboard-backlight-up │ │ ├── asus-wireless-off │ │ ├── asus-wireless-on │ │ ├── ibm-wireless │ │ ├── lenovo-undock │ │ ├── thinkpad-cmos │ │ └── tosh-wireless │ ├── ibm-wireless.sh │ ├── tosh-wireless.sh │ └── undock.sh ├── adduser.conf ├── aliases ├── alsa │ └── conf.d │ ├── 10-samplerate.conf -> /usr/share/alsa/alsa.conf.d/10-samplerate.conf │ ├── 10-speexrate.conf -> /usr/share/alsa/alsa.conf.d/10-speexrate.conf ... . │ ├── menus │ │ └── gnome-applications.menu │ ├── systemd │ │ └── user -> ../../systemd/user │ ├── user-dirs.conf │ ├── user-dirs.defaults │ └── Xwayland-session.d │ └── 00-xrdb ├── xml │ ├── catalog │ ├── catalog.old │ ├── docbook-xml.xml │ ├── docbook-xml.xml.old │ ├── sgml-data.xml │ ├── sgml-data.xml.old │ ├── xml-core.xml │ └── xml-core.xml.old ├── zsh │ ├── newuser.zshrc.recommended │ ├── zlogin │ ├── zlogout │ ├── zprofile │ ├── zshenv │ └── zshrc └── zsh_command_not_found 447 directories, 4331 files
应传递选项-a以查看所有文件。默认情况下,tree 不会打印隐藏文件(以点“。”开头的文件)。在任何情况下,tree 都不会打印文件系统构造“。”(当前目录)和“..”(上一个目录)。:
$ tree -a
要仅列出目录,请运行:
$ tree -d
传递-C选项以查看彩色输出,使用内置颜色默认值:
$ tree -C
示例输出:
图 01:Linux tree 命令显示目录层次结构
------- Listing options ------- -a All files are listed. -d List directories only. -l Follow symbolic links like directories. -f Print the full path prefix for each file. -x Stay on current filesystem only. -L level Descend only level directories deep. -R Rerun tree when max dir level reached. -P pattern List only those files that match the pattern given. -I pattern Do not list files that match the given pattern. --ignore-case Ignore case when pattern matching. --matchdirs Include directory names in -P pattern matching. --noreport Turn off file/directory count at end of tree listing. --charset X Use charset X for terminal/HTML and indentation line output. --filelimit # Do not descend dirs with more than # files in them. --timefmt <f> Print and format time according to the format <f>. -o filename Output to file instead of stdout. -------- File options --------- -q Print non-printable characters as '?'. -N Print non-printable characters as is. -Q Quote filenames with double quotes. -p Print the protections for each file. -u Displays file owner or UID number. -g Displays file group owner or GID number. -s Print the size in bytes of each file. -h Print the size in a more human readable way. --si Like -h, but use in SI units (powers of 1000). -D Print the date of last modification or (-c) status change. -F Appends '/', '=', '*', '@', '|' or '>' as per ls -F. --inodes Print inode number of each file. --device Print device ID number to which each file belongs. ------- Sorting options ------- -v Sort files alphanumerically by version. -t Sort files by last modification time. -c Sort files by last status change time. -U Leave files unsorted. -r Reverse the order of the sort. --dirsfirst List directories before files (-U disables). --sort X Select sort: name,version,size,mtime,ctime. ------- Graphics options ------ -i Don't print indentation lines. -A Print ANSI lines graphic indentation lines. -S Print with CP437 (console) graphics indentation lines. -n Turn colorization off always (-C overrides). -C Turn colorization on always. ------- XML/HTML/JSON options ------- -X Prints out an XML representation of the tree. -J Prints out an JSON representation of the tree. -H baseHREF Prints out HTML format with baseHREF as top directory. -T string Replace the default HTML title and H1 header with string. --nolinks Turn off hyperlinks in HTML output. ---- Miscellaneous options ---- --version Print version and exit. --help Print usage and this help message and exit. -- Options processing terminator.
总结
您了解了 Linux 和 macOS 下的树命令。它是一个递归目录列表程序,可生成树格式的缩进深度文件列表。在 macOS Unix 和 Linux 上,查看目录树格式以方便使用非常有用。有关更多信息,请使用 man 命令或 help 命令阅读手册页:
$ man tree
$ tree --help