zzxworld

Linux tree 命令使用示例和选项介绍

Linux tree 命令使用示例和选项介绍

在只有命令行的终端环境,使用 ls 或是 cd 这类命令很难直观的体现一个目录中的文件结构和层次,tree 命令可以解决这个问题。它能以结构化的树形方式递归展示目录的深度和层级。除了能在终端直接展现目录树形图,它还能把结构数据以 HTML 或是 JSON 格式导出,这给命令的使用场景增添了更多可能性。

一些 Linux 系统上默认没有提供 tree 命令,使用前需要先安装。这通常使用系统自带的包管理命令就能解决。比如在 Arch Linux 上安装:

sudo pacman -S tree

Debian 或 Ubuntu Linux 可以使用 Apt 安装:

sudo apt install tree

tree 命令格式

tree [选项...] [目录位置]

tree 命令示例

不指定任何选项和位置的 tree 命令会展示当前所在位置的目录树形图:

tree

展示指定位置 ./zzxworld 的目录树形图:

tree ./zzxworld

命令输出的格式大致如下:

./zzxworld
├── abc
├── a.txt
└── b.txt

1 directory, 2 files

tree 命令默认会遍历输出所有层级的目录,使用 -L 选项可以限定输出的层级。比如只输出根目录下的结构:

tree -L 1 ./

tree 命令提供的另外一个高级特性是可以指定输出的数据格式。默认为文本,使用 -X 选项可以让数据以 XML 格式输出:

tree -X ./zzxworld
<?xml version="1.0" encoding="UTF-8"?>
<tree>
  <directory<directory name="./zzxworld">
    <directory<directory name="abc"></directory>
    <file<file name="a.txt"></file>
    <file<file name="b.txt"></file>
  </directory>
  <report>
    <directories>1</directories>
    <files>2</files>
  </report>
</tree>

使用 -J 选项能以 JSON 格式输出:

tree -J ./zzxworld
[
  {"type":"directory","name":"./zzxworld","contents":[
    {"type":"directory","name":"abc"},
    {"type":"file","name":"a.txt"},
    {"type":"file","name":"b.txt"}
  ]}
,
  {"type":"report","directories":1,"files":2}
]

tree 命令选项

tree 命令提供了丰富的选项和参数可以自定义一些输出行为和展现方式。这些选项按照用途大致可以分为:列表选项,文件选项,排序选项,图形化选项,输出选项,输入选项和常规选项。

列表选项

选项名称 说明
-a 显示所有文件。
-d 只显示目录。
-l 显示符号链接类型的目录。
-f 显示文件完整的路径信息。
-x 只使用当前文件系统。
-L level 设置目录显示的最大层级。
-R 递归遍历显示每个目录。
-P pattern 只显示符合 pattern 匹配规则的文件和目录。
-I pattern 不显示符合 pattern 匹配规则的文件或目录。
--ignore-case 忽略大小写。
--matchdirs 只匹配目录,和 -P 选项配合使用。
--prune 不显示空目录。
--noreport 不显示最后的文件和目录数量汇总信息。
--charset 设置字符集。
--filelimit # 限制目录文件显示数量。
--timefmt format 以指定格式格式化并显示日期。
-o filename 将结果输出到指定文件。

文件选项

选项名称 说明
-q 使用问号替代文件名中的特殊字符。
-N 不转义显示特殊字符。
-Q 使用双引号显示文件名。
-p 显示文件类型和权限。
-u 显示用户名。
-g 显示用户组。
-s 显示文件大小。
-h 以可读的样式显示文件大小。
--si -h 类似,不过计量单位是 1000。
--du 显示目录大小。
-D 显示文件最后修改时间。
-F 显示附加符号。目录是 /, socket 文件是 =, 可执行文件是 *
--inodes 显示文件或目录的节点编号(inode number)。
--device 显示文件或目录所属设备编号。

排序选项

选项名称 说明
-v 按文件版本排序。
-t 按文件最后修改时间排序。
-c 按文件最近修改状态排序。
-U 不使用排序。
-r 反向排序。这需要配合其他排序选项。
--dirsfirst 目录优先显示。
--sort[=]type 按指定类型排序。可用值: ctime, mtime, size, version

图形化选项

选项名称 说明
-i 不显示缩进。
-A 使用 ANSI 字符显示压痕线。
-S 启用 CP437 图形选项,使用 Linux 控制台模式字体时会有帮助。
-n 关闭色彩化输出。
-C 启用色彩化输出。

输出选项

选项名称 说明
-X 使用 XML 格式输出。
-J 使用 JSON 格式输出。
-H baseHREF 使用 HTML 格式输出。baseHREF 用来设置基本链接。
-T title 使用 HTML 格式输出时设置 H1 标签内的标题内容。
--nolinks 使用 HTML 格式输出时不使用超链接。

输入选项

选项名称 说明
--fromfile 从文件读取目录列表数据。此选项可以配合其他命令从标准输入获取列表数据源。

常规选项

选项名称 说明
--help 输出命令帮助信息。
--version 输出命令版本信息。
-- 终端处理选项。