利用tree命令图形显示目录内容

解增言

2020-04-06 10:31

一般情况下,我们用ls命令来显示目录的内容,ls命令的结果简单、整洁。但有时我们希望了解整个目录的层次结构,这时我们就可以用tree命令来直观的显示目录的层次关系。

Linux系统中默认并没有安装tree命令,你可以用sudo yum install tree(CentOS、Fedora)或sudo apt-get install tree(Ubuntu)来安装该命令。

直接运行tree命令,就是显示当前目录的结构:

$ tree
.
├── animal
│   ├── Homo_sapiens
│   │   ├── genomic.fna
│   │   ├── protein.faa
│   │   └── transicript.fna
│   └── Mus_musculus
├── fungus
└── plant
    ├── Arabidopsis_thaliana
    └── Oryza_sativa

7 directories, 3 files
		

tree命令有很多选项,如:

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

例如,如果我们要显示文件类型,可以用选项-F:

$ tree -F
.
├── animal/
│   ├── Homo_sapiens/
│   │   ├── genomic.fna
│   │   ├── protein.faa
│   │   └── transicript.fna
│   └── Mus_musculus/
├── fungus/
└── plant/
    ├── Arabidopsis_thaliana/
    └── Oryza_sativa/

7 directories, 3 files
		

每个目录后面会有一个“/”。可以用man命令查看tree的完整的帮助手册,了解更多选项。