tree:以樹形結構顯示目錄下的內容
tree命令
1、命令詳解
【功能說明】
tree命令的中文意思為“樹”,功能是以樹形結構列出指定目錄下的所有內容包括所有檔案、子目錄及子目錄裡的目錄和檔案。
【語法格式】
tree[option][directory] tree[選項][目錄]
【說明】
-
-
- 注意tree命令以及後面的選項和目錄,每個元素之間都至少要有一個空格。
- tree命令後若不接選項和目錄就會預設顯示當前所在路徑目錄的目錄結構。
-
2、引數說明
引數選項 | 解釋說明(帶 Δ 的為重點) |
-a | 顯示所有檔案,包括隱藏檔案(以 “.” 點開頭的檔案 ) |
-d | 只顯示目錄 Δ |
-f | 只顯示每個檔案的全路徑 |
-i | 不顯示樹枝,常與-f引數配合使用 |
-L level | 遍歷目錄的最大層數,level 為大於0的正整數 Δ |
-F | 在執行檔案、目錄、Socket符號連結、管道名稱等不同型別檔案的結尾,各自加上“*”、 "/"、"="、"@"、"|"號、類似ls命令的-F選項 |
3、使用範例
在講解案例之前,先做準備工作
第一步,安裝tree命令
首先檢查系統是否安裝了tree命令,如果不採用的是最小安裝linux系統的方式,哪麼tree命令有可能沒有安裝。此時可用yum命令安裝tree命令:
[root@1-230 ~]# rpm -qa tree #查詢tree命令是否安裝
tree-1.6.0-10.el7.x86_64 #如果沒有顯示就執行下面的命令
[root@1-230 ~]# yum -y install tree #安裝tree命令的yum命令
第二步,呼叫系統字符集,防止樹形結構顯示亂碼。
在使用樹形結構時,很可能會因為字符集導致出現亂碼問題,比如導致樹形的樹枝部分都是問號,例如:
[root@1-230 ~]# tree /usr/local/
/usr/local/
?..? bin
?..? etc
?..? games
?..? include
?..? lib
?..? lib64
?..? libexec
?..? sbin
?..? share
?...?..? applications
?...?..? info
?...?..? man
下面的命令為臨時解決樹結構亂碼的方法
[root@1-230 ~]# LANG=en_US.UTF-8
4、案例範例
1、不帶任何引數執行tree命令
[root@1-230 etc]# cd ~ #顯示當前目錄的結果
[root@1-230 ~]# tree
. # " . " 以當前目錄為起點
└── anaconda-ks.cfg
0 directories, 1 file
2、以樹形結構顯示目錄下的所有內容(-a的功能)
[root@1-230 ~]# tree -a #帶 -a 引數顯示所有檔案(包括隱藏檔案)
.
├── anaconda-ks.cfg
├── .bash_history #在linux系統中,以" . "點號開頭的檔案為隱藏檔案,預設不顯示
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .pki
│ └── nssdb
├── .ssh
│ ├── id_rsa
│ ├── id_rsa.pub
│ └── known_hosts
├── .tcshrc
└── .viminfo
3 directories, 11 files
3、只列出目錄下第一層目錄的結構(-L 功能)
[root@1-230 ~]# tree -L 1 / #-L引數後接數字,表示檢視目錄的層數,不帶-L選項預設顯示所有層數
/
├── bin -> usr/bin
├── boot
├── dev
├── docker
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── scripts
├── server
├── srv
├── sys
├── tmp
├── usr
└── var
22 directories, 0 files
4、只顯示所有的目錄(但不顯示檔案)。
[root@1-230 ~]# tree -d /usr/local/ #-d 引數表示只顯示目錄
/usr/local/
├── bin
├── etc
├── games
├── include
├── lib
├── lib64
├── libexec
├── sbin
├── share
│ ├── applications
│ ├── info
│ └── man
│ ├── man1
│ ├── man1x
│ ├── man2
│ ├── man2x
│ ├── man3
│ ├── man3x
│ ├── man4
│ ├── man4x
│ ├── man5
│ ├── man5x
│ ├── man6
│ ├── man6x
│ ├── man7
│ ├── man7x
│ ├── man8
│ ├── man8x
│ ├── man9
│ ├── man9x
│ └── mann
└── src
32 directories
[root@1-230 ~]# tree -dL 1 /usr/local/ #-d引數只顯示目錄,-L引數顯示層數,這裡是1層。
/usr/local/
├── bin
├── etc
├── games
├── include
├── lib
├── lib64
├── libexec
├── sbin
├── share
└── src
10 directories
5、-f選項和-i選項的使用
使用-f選項可顯示完整的路徑名稱,使用-i選項則不顯示樹枝部分,示例程式碼如下:
[root@1-230 ~]# tree -L 1 -f /usr/local/ # -f 顯示內容的完整路徑
/usr/local
├── /usr/local/bin
├── /usr/local/etc
├── /usr/local/games
├── /usr/local/include
├── /usr/local/lib
├── /usr/local/lib64
├── /usr/local/libexec
├── /usr/local/sbin
├── /usr/local/share
└── /usr/local/src
10 directories, 0 files
[root@1-230 ~]# tree -L 1 -fi /usr/local/ # -i 不顯示 “樹枝” ,當需要獲取所有檔案的完整路徑時,這個命令很好用。
/usr/local
/usr/local/bin
/usr/local/etc
/usr/local/games
/usr/local/include
/usr/local/lib
/usr/local/lib64
/usr/local/libexec
/usr/local/sbin
/usr/local/share
/usr/local/src
10 directories, 0 files
6、使用tree命令區分目錄和檔案的方法(常用)
[root@1-230 ~]# tree -L 1 -F /boot #使用-F引數會在目錄後面新增 “/ ”,方便區分目錄
/boot
├── config-3.10.0-514.el7.x86_64
├── grub/
├── grub2/
├── initramfs-0-rescue-acfc6ac3b92c4b9d94570fde26f40941.img
├── initramfs-3.10.0-514.el7.x86_64.img
├── initramfs-3.10.0-514.el7.x86_64kdump.img
├── initrd-plymouth.img
├── symvers-3.10.0-514.el7.x86_64.gz
├── System.map-3.10.0-514.el7.x86_64
├── vmlinuz-0-rescue-acfc6ac3b92c4b9d94570fde26f40941*
└── vmlinuz-3.10.0-514.el7.x86_64*
2 directories, 9 files
[root@1-230 ~]# tree -L 1 -F /boot/ |grep /$ #過濾以斜線結尾的所有內容,如果大家看不懂這方法,那麼建議等學完grep命令在回頭來看
/boot/
├── grub/
├── grub2/
[root@1-230 ~]# tree -L 1 -d /boot/ #使用-d引數只顯示目錄樹,這樣可以輕鬆過濾內容中的目錄。
/boot/
├── grub
└── grub2
2 directories