Linux Command tree 树状图
1. 简介
Linux tree命令用于以树状图列出目录的内容。
执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
2. 语法
tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
参数说明:
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
3. 实例
3.1 无参数执行
tree
.
├── docker
│ └── volume
│ └── Dockerfile
├── iptables-scripts
└── wireguard
├── docker-compose
│ ├── config
│ │ ├── coredns
│ │ │ └── Corefile
│ │ ├── peer1
│ │ │ ├── peer1.conf
│ │ │ ├── peer1.png
│ │ │ ├── presharedkey-peer1
│ │ │ ├── privatekey-peer1
│ │ │ └── publickey-peer1
│ │ ├── server
│ │ │ ├── privatekey-server
│ │ │ └── publickey-server
│ │ ├── templates
│ │ │ ├── peer.conf
│ │ │ └── server.conf
│ │ └── wg0.conf
│ └── docker-compose.yml
└── private
9 directories, 15 files
3.2 只显示目录
tree -d
.
├── docker
│ └── volume
└── wireguard
└── docker-compose
└── config
├── coredns
├── peer1
├── server
└── templates
9 directories
3.3 显示文件大小
$ tree -L 2 --du -h
.
├── [ 36K] payments
│ ├── [2.4K] deploy.sh
│ ├── [4.0K] dist
│ ├── [4.0K] lib
│ ├── [4.0K] node_modules
│ ├── [1.5K] package.json
│ ├── [ 356] readme.md
│ ├── [4.0K] src
│ ├── [4.0K] test
│ └── [ 406] tsconfig.json
│ ......
└── [ 30K] transaction_engine
├── [2.4K] deploy.sh
├── [4.0K] dist
├── [4.0K] lib
├── [4.0K] node_modules
├── [ 570] package.json
├── [ 658] readme.md
├── [4.0K] src
└── [ 397] tsconfig.json
设置别名
$ alias t="tree --du -h -L"
$ t 2
.
├── [ 36K] payments
│ ├── [2.4K] deploy.sh
│ ├── [4.0K] dist
│ ├── [4.0K] lib
│ ├── [4.0K] node_modules
│ ├── [1.5K] package.json
│ ├── [ 356] readme.md
│ ├── [4.0K] src
│ ├── [4.0K] test
│ └── [ 406] tsconfig.json
│ ......
└── [ 30K] transaction_engine
├── [2.4K] deploy.sh
├── [4.0K] dist
├── [4.0K] lib
├── [4.0K] node_modules
├── [ 570] package.json
├── [ 658] readme.md
├── [4.0K] src
└── [ 397] tsconfig.json
当然显示文件大小也可以通过du
$ du -ah --max-depth=2
7.5M ./payments/dist
64K ./payments/lib
74M ./payments/node_modules
28K ./payments/src
60K ./payments/test
82M ./payments
...
108K ./transaction_engine/dist
44K ./transaction_engine/lib
62M ./transaction_engine/node_modules
16K ./transaction_engine/src
0 ./transaction_engine/test
62M ./transaction_engine