tree:以樹形結構顯示目錄下的內容


tree命令

  1、命令詳解

      【功能說明】

        tree命令的中文意思為“樹”,功能是以樹形結構列出指定目錄下的所有內容包括所有文件、子目錄及子目錄里的目錄和文件。

      【語法格式】      

        tree    [option]   [directory]
        tree    [選項]      [目錄]

      【說明】

      1. 注意tree命令以及后面的選項和目錄,每個元素之間都至少要有一個空格。
      2. 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM