命令说明

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

  但是有些系统没有tree命令,所以需要安装:(如果采用最小化安装的linux系统,可能没有tree命令)
先检查:

[root@server-105 ~]# rpm -qa tree
tree-1.6.0-10.el7.x86_64

否则就进行安装:
[root@server-105 ~]# yum install tree
语法:

  tree(选项)(参数)

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

示例:
1、不带任何参数

[root@server-105 ~]# tree
.
├── anaconda-ks.cfg
└── mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

2、显示所有内容 -a

[root@server-105 ~]# tree -a
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
├── .mysql_history
├── .oracle_jre_usage
│   └── 1c45eaeb254b5676.timestamp
├── .ssh
│   └── authorized_keys
├── .tcshrc
└── .viminfo

3、列出第一层目录下的结构(-L)

[root@server-105 ~]# tree -L 1 /
/
├── apps
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

4、只显示目录(-d)

[root@server-105 usr]# tree -d /etc/
/etc/
├── alternatives
├── audisp
│   └── plugins.d
├── audit
│   └── rules.d
├── avahi
│   ├── etc
│   └── services
├── bash_completion.d
├── binfmt.d
├── chkconfig.d
├── cron.d
.......省略

5、-f选项和-i选项的使用

[root@server-105 usr]# tree -L 1 -f /root/
/root
├── /root/anaconda-ks.cfg
└── /root/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

[root@server-105 usr]# tree -L 1 -fi /root/
/root
/root/anaconda-ks.cfg
/root/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

6、使用tree命令区分目录和文件的方法:

[root@server-105 usr]# tree -L 1 -F /boot/
/boot/
├── config-3.10.0-123.9.3.el7.x86_64
├── grub/
├── grub2/ #目录后面会加/
├── initramfs-0-rescue-0540a029c3f6460fb76f7e013dfc6020.img
├── initramfs-3.10.0-123.9.3.el7.x86_64.img
├── initramfs-3.10.0-123.9.3.el7.x86_64kdump.img
├── initrd-plymouth.img
├── symvers-3.10.0-123.9.3.el7.x86_64.gz
├── System.map-3.10.0-123.9.3.el7.x86_64
├── vmlinuz-0-rescue-0540a029c3f6460fb76f7e013dfc6020*
└── vmlinuz-3.10.0-123.9.3.el7.x86_64*

或者使用:
tree -L 1 -F /boot/|grep /$
tree -L 1 -d /boot/