linux tree命令 树结构显示目录文件

  • Post author:
  • Post category:linux




命令简介

tree命令的中文意思为“树”,功能是以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件。

命令格式

tree [option] [directory]

tree [选项] [目录]

说明:

1)注意tree命令以及后面的选项和目录,每个元素之间都至少要有一个空格

2)tree命令后若不接选项和目录就会默认显示当前所在路径目录的目录结构

tree命令的参数选项及说明,图片来源于 【跟老男孩学Linux运维:核心系统命令】


-I

:命令允许你使用正则匹配来排除掉你不想看到的文件夹

举例

在举例前,我们是不是应该安装好tree命令呢?(如果你也采用最小化安装Linux系统的方式,那么tree命令可能没有安装,此时我们应该用yum命令来安装tree命令)

1

2

3


[root@king ~]# rpm -qa tree               #<==查询tree命令是否安装。




tree-1.5.3-2.el6.x86_64                  #<==如果没有显示就执行下面的命令


[root@king ~]# yum -y install tree        #<==安装tree命令的yum命令

临时解决树结构乱码的方法

[root@king ~]# LANG=en_US.UTF-8


例子一:不带任何参数执行tree命令

[root@king etc]# cd ~
[root@king ~]# tree         #<==显示当前目录的结构。
.                   #<==“.”以当前目录为起点。
├── anaconda-ks.cfg
├── install.log
└── install.log.syslog
0 directories, 3 files


例子二:以树形结构显示目录下的所有内容(-a的功能)

1

2

3

4

5

6

7

8

9


[root@king ~]# tree -a       #<==带-a参数显示所有文件(包括隐藏文件)。


.


├── anaconda-ks.cfg


├── .bash_history          #<==在Linux系统中,以“.”点号开头的文件为隐藏文件,默认不显示。


├── .bash_logout


├── .bash_profile


├── .bashrc


├── .cshrc


├── install.log


...省略若干行...


例子三:只列出根目录下第一层目录的结构(-L功能)

1

2

3

4

5

6

7

8

9

10

11


[root@king ~]# tree -L 1 / #<==-L参数后接数字,表示查看目录的层数,不带-L选项默


认显示所有层数。


/


├── bin


├── boot


...省略若干行...


├── sys


├── tmp


├── usr


└──


var


20 directories, 0 files


例子四:只显示所有的目录(但不显示文件)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


[root@king ~]# tree -d /etc/   #<==-d参数表示只显示目录。


/etc/


|-- ConsoleKit


|   |-- run-seat.d


|   |-- run-session.d


|   '-- seats.d


|-- NetworkManager


|   '-- dispatcher.d


……省略若干行


[root@oldboy ~]# tree -dL 1 /etc/  #<==-d参数只显示目录,-L参数显示层数,这里是1层。


/etc/


|-- ConsoleKit


|-- NetworkManager


|-- X11


……省略若干行


例子五:用tree命令来区分目录和文件的方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17


[root@king ~]# tree -L 1 -F /boot/      #<==使用-F参数会在目录后面添加“/”,方便区分目录


/boot/


├── config-2.6.32-504.el6.x86_64


├── efi/


├── grub/


├── initramfs-2.6.32-504.el6.x86_64.img


├── lost+found/


├── symvers-2.6.32-504.el6.x86_64.gz


├── System.map-2.6.32-504.el6.x86_64


└── vmlinuz-2.6.32-504.el6.x86_64*


[root@king ~]# tree -L 1 -F /boot/|grep /$      #<==过滤以斜线结尾的所有内容


/boot/


|-- efi/


|-- grub/


|-- lost+found/


3 directories, 5 files


[root@king ~]# tree -L 1 -d /boot/      #<==使用-d参数只显示目录树,这样可轻松过滤内容中的目录<br>/boot/<br>|-- efi<br>|-- grub<br>'-- lost+found<br>3 directories

说明:$在Linux正则表达式中标识以什么什么结尾,^表示以什么什么开头,^$表示空行,此处只做简要说明


例子六:忽略某个文件夹的内容


-I

命令允许你使用正则匹配来排除掉你不想看到的文件夹,例如:

tree -I "node_modules"

也可以使用

|

同时排除掉多个文件夹:

tree -I "node_modules|cache|test_*"

最后一个使用到正则匹配,这样以

test_

开头的文件夹都不会被显示出来。