tree 是一种递归目录列表命令,用于显示目录结构的实用工具,产生一个深度缩进列表文件目录树形结构。

tree已被移植到多种操作系统:Linux,FreeBSD,OS X,Solaris,HP UX,Cygwin,HP NonStop OS / 2。

tree命令在系统管理员、开发者和文件管理任务中非常有用。

 

tree 官网http://mama.indstate.edu/users/ice/tree/

tree 下载tree-1.7.0.tgz

 

tree 安装

tar -zxvf tree-1.7.0.tgz
cd tree-1.7.0
make && make install

tree 测试:

# tree
.
├── CHANGES
├── color.c
├── color.o
├── doc
│   ├── tree.1
│   ├── tree.1.fr
│   └── xml.dtd
├── hash.c
├── hash.o
├── html.c
├── html.o
├── INSTALL
├── json.c
├── json.o
├── LICENSE
├── Makefile
├── README
├── strverscmp.c
├── TODO
├── tree
├── tree.c
├── tree.h
├── tree.o
├── unix.c
├── unix.o
├── xml.c
└── xml.o

1 directory, 26 files

 

tree 参数

tree -xxx path

-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级,例如显示两级: tree -L 2
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。


tree 示例1

tree 命令显示出 "文件权限 + 文件或目录的拥有者 + 文件或目录大小 + 更改时间排序 + 更改时间"

# tree /usr/local/redis/ -pustD
/usr/local/redis/
├── [drwxr-xr-x root            4096 Jul  1 15:33]  data
│   ├── [-rw-r--r-- root              88 Jul  1 15:33]  dump.rdb
│   └── [drwxr-xr-x root            4096 Jul  1 12:00]  appendonlydir
│       ├── [-rw-r--r-- root              88 Jul  1 12:00]  appendonly.aof.1.base.rdb
│       ├── [-rw-r--r-- root               0 Jul  1 12:00]  appendonly.aof.1.incr.aof
│       └── [-rw-r--r-- root              88 Jul  1 12:00]  appendonly.aof.manifest
├── [drwxr-xr-x root            4096 Jul  1 15:33]  logs
│   ├── [-rw-r--r-- root           12626 Jul  1 15:33]  redis.log
│   └── [-rw-r--r-- root               5 Jul  1 15:33]  redis.pid
├── [drwxr-xr-x root            4096 Jul  1 15:32]  etc
│   └── [-rw-r--r-- root          107765 Jul  1 15:32]  redis.conf
└── [drwxr-xr-x root            4096 Jun 30 22:21]  bin
    ├── [-rwxr-xr-x root         6899720 Jun 30 22:21]  redis-benchmark
    ├── [lrwxrwxrwx root              12 Jun 30 22:21]  redis-check-aof -> redis-server
    ├── [lrwxrwxrwx root              12 Jun 30 22:21]  redis-check-rdb -> redis-server
    ├── [-rwxr-xr-x root         7619600 Jun 30 22:21]  redis-cli
    ├── [lrwxrwxrwx root              12 Jun 30 22:21]  redis-sentinel -> redis-server
    └── [-rwxr-xr-x root        15418240 Jun 30 22:21]  redis-server

5 directories, 13 files

 

tree 示例2

tree 命令显示出 "目录权限 + 目录大小 + 更改时间 + 目录"

# tree -psDd /usr/local/redis/ 
/usr/local/redis/
├── [drwxr-xr-x        4096 Jun 30 22:21]  bin
├── [drwxr-xr-x        4096 Jul  1 15:33]  data
│   └── [drwxr-xr-x        4096 Jul  1 12:00]  appendonlydir
├── [drwxr-xr-x        4096 Jul  1 15:32]  etc
└── [drwxr-xr-x        4096 Jul  1 15:33]  logs

5 directories

参考推荐

Linux命令之tree命令     CSDN

Linux 系统编程——tree 命令   CSDN

BTree, B-Tree, B+Tree, B*Tree 都是什么

Git 项目管理工具 SourceTree 图解

MySQL 索引算法B树、B+树小结