1. 程式人生 > >Linux雜談: 樹形顯示多級目錄--tree

Linux雜談: 樹形顯示多級目錄--tree

顏色顯示 節點 隱藏文件 tree 命令 直觀 使用 rst 完整 執行

  最近寫博客的時候偶爾會需要將文件目錄結構直觀地列出來,例如python的包結構。

  於是在網上搜了搜,發現了一個Linux下還不錯的工具--tree

  tree 可以很直觀地顯示多級目錄結構。

1. 安裝方法

  Ubuntu上直接

sudo apt install tree

2. 幾個比較常規的用法:

  1. 顯示目錄結構

[root@ Test]# tree
.
└── Level-1
    ├── L1-File-1.txt
    ├── L1-File-2.txt
    ├── Level-2-1
    │   ├── L21-File-1.txt
    │   ├── Level
-3-1 │ │ └── L31-File-1.txt │ ├── Level-3-2 │ │ └── L32-File-1.txt │ └── Level-3-3 │ └── L33-File-1.txt ├── Level-2-2 │ └── L22-File-1.txt └── Level-2-3 7 directories, 7 files

  

  2. 包含隱藏文件

[root@ Test]# tree -a
.
└── Level-1
    ├── L1-File-1.txt
    ├── L1
-File-2.txt ├── .L1-hide.dat ├── Level-2-1 │ ├── L21-File-1.txt │ ├── .L2-hide.dat │ ├── Level-3-1 │ │ └── L31-File-1.txt │ ├── Level-3-2 │ │ └── L32-File-1.txt │ └── Level-3-3 │ └── L33-File-1.txt ├── Level-2-2 │ └── L22-File-1
.txt └── Level-2-3 7 directories, 9 files

  3. 控制深度(假設為3)

[root@ Test]# tree -L 3
.
└── Level-1
    ├── L1-File-1.txt
    ├── L1-File-2.txt
    ├── Level-2-1
    │   ├── L21-File-1.txt
    │   ├── Level-3-1
    │   ├── Level-3-2
    │   └── Level-3-3
    ├── Level-2-2
    │   └── L22-File-1.txt
    └── Level-2-3

7 directories, 4 files

  4. 只顯示目錄

[root@ Test]# tree -d
.
└── Level-1
    ├── Level-2-1
    │   ├── Level-3-1
    │   ├── Level-3-2
    │   └── Level-3-3
    ├── Level-2-2
    └── Level-2-3

7 directories

  5. 對需要顯示的文件進行過濾

# 只顯示包含 "L2"字符串的文件,並將過濾後的空目錄也同時過濾掉
[root@ Test]# tree -P *L2* --prune
.
└── Level-1
    ├── Level-2-1
    │   └── L21-File-1.txt
    └── Level-2-2
        └── L22-File-1.txt

3 directories, 2 files


# 只顯示不包含 "L2"字符串的文件,並將過濾後的空目錄也同時過濾掉
[root@ Test]# 
[root@ Test]# tree -I *L2* --prune
.
└── Level-1
    ├── L1-File-1.txt
    ├── L1-File-2.txt
    └── Level-2-1
        ├── Level-3-1
        │   └── L31-File-1.txt
        ├── Level-3-2
        │   └── L32-File-1.txt
        └── Level-3-3
            └── L33-File-1.txt

5 directories, 5 files

3. 更多的選項

選項 說明
-a 顯示所有文件,包含隱藏文件。
-d 只顯示目錄。
-l 跟蹤符號鏈接,如果鏈接的是一個目錄,則當成目錄處理。
-f 顯示完整路徑。
-x 只顯示本文件系統。
-L level 控制顯示的目錄深度。
-R 在下級目錄中,再次執行 tree 命令並且加上 ‘-o 00Tree.html‘選項,配合-L,-H使用。
-P pattern 只顯示匹配了 pattern 的文件(不是目錄),支持簡單的正則表達式。
-I pattern 與-P相反,只顯示沒有匹配 pattern的文件。
--ignore-case 當使用了-P或-I選項時,忽略大小寫。
--matchdirs 當使用了-P選項時,文件名包含完整路徑。
--prune 不顯示空目錄,如果經過-P或-I後沒有目錄下沒有需要顯示的,也當作空目錄。
--noreport 不顯示最後的統計信息。
--charset charset 指定字符集。
--filelimit # 過濾掉文件個數超過 # 的目錄。
--timefmt fmt 按照指定的格式打印文件的修改時間。
-o filename 將結果輸出到文件。
-q 用問號代替不可打印的字符。
-N 用八進制代替不可打印的字符。
-Q 用引號將文件名括起來。
-p 顯示文件的類型和權限。
-u 顯示文件所屬的用戶名或者UID。
-g 顯示文件所屬的組或者GID。
-s 顯示文件的大小,單位:字節。
-h 顯示文件的大小,使用更人性化的顯示。
--si 顯示文件的大小,類似 -h 但是使用國際公制單位(1k=1000)。
--du 對於目錄,顯示其下所有文件的累計大小。
-D 顯示文件的最後修改時間。
-F 類似 ls -F,對不同的文件類型,在末尾加上不同的字符。
--inodes 顯示文件的索引節點。
--device 顯示文件所屬的設備號。
-v 顯示的文件列表按照version排序。
-t 顯示的文件列表按照最後修改時間排序。
-c 顯示的文件列表按照最後的狀態改變時間排序。
-U 不進行排序處理。
-r 反向輸出列表。
--dirsfirst 優先顯示目錄(同一級別  )
--sort[=name] 指定排序方式,name(default), ctime, mtime, size, version.
-i 輸出中不要進行縮進。
-A 使用ASCII的橫線字符表示縮進。
-S 使用CP437的橫線字符表示縮進。
-n 關閉顏色顯示。
-C 打開顏色顯示。
-X 使能XML格式輸出。
-J 使能JSON格式輸出。
-H baseHREF 使能HTML格式輸出,並包含基本http鏈接地址。
-T title 在HTML格式輸出中,設置標題和H1標簽頭
--nolinks 在HTML格式輸出中,不輸出超鏈接。

Linux雜談: 樹形顯示多級目錄--tree