目錄
1.前言
2.Linux的tree工具
2.1.安裝tree
2.2.常用命令與參數
2.3.常見應用場景
2.4.注意事項
3.Windows的tree工具
3.1.基礎語法
3.2.核心參數詳解
3.3.常見應用場景
3.4.局限性與增強方案
4.Windows 與 Linux?tree?的核心差異
5.tree工具優勢
5.總結
相關鏈接
1.前言
? ? ? ? 在閱讀工程源代碼的時候,一開始很想大概瀏覽一下整個項目的目錄,層次結構和各目錄大致有那些文件,如下面這種:
此時,tree命令就正好用得到。
????????tree 是一個實用的目錄列表工具,以樹形結構遞歸顯示文件和目錄,直觀展示層級關系。它支持自定義過濾、排序、輸出格式等功能,是管理文件系統的利器。Windows 和 Linux 系統中都有類似工具,但功能和使用方式略有差異。
2.Linux的tree工具
Linux 系統通常默認不預裝?tree
,但可以通過包管理器快速安裝,功能豐富且參數靈活。
2.1.安裝tree
Debian/Ubuntu 系:
sudo apt update && sudo apt install tree
?RedHat/CentOS 系:
sudo yum install tree # CentOS 7及以下
# 或
sudo dnf install tree # CentOS 8+/Fedora
Arch 系:
sudo pacman -S tree
2.2.常用命令與參數
基本語法:tree [參數] [目錄路徑]
(默認顯示當前目錄)
通過 man tree 命令查看幫助信息
大致看了下,翻譯了一些常見的選項如下:
-a #顯示所有文件和目錄
-d #顯示目錄名稱而非文件
-l #如遇到性質為符號連接的目錄,直接列出該連接所指向的原始目錄
-f #在每個文件或目錄之前,顯示完整的相對路徑名稱
-x #將范圍局限在現行的文件系統中,若指定目錄下的某些子目錄,其存放于另一個文件系統上,則將該目錄予以排除在尋找范圍外
-L level #限制目錄顯示層級
-R #不要列出與給定模式匹配的文件
-P pattern #<范本樣式> 只顯示符合范本樣式的文件和目錄名稱
-I pattern #不列出與給定模式匹配的文件
--ignore-case #模式匹配時忽略大小寫
--matchdirs #在-P模式匹配中包含目錄名
--noreport #關閉樹列表末尾的文件/目錄計數
--charset X #將字符集X用于終端/HTML和縮進行輸出
--filelimit #請勿下載包含超過個文件的目錄
--timefmt <f> #根據格式<f>打印和格式化時間
-o filename #輸出到文件而不是輸出到屏幕
--du #打印目錄大小
--prune #從輸出中刪除空目錄
-------- 文件選項 ---------
-q #用“?”號取代控制字符,列出文件和目錄名稱
-N #直接列出文件和目錄名稱,包括控制字符
-Q #用雙引號引用文件名
-p #列出權限標示
-u #列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼
-g #列出文件或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼
-s #列出文件和目錄大小
-h #以更易讀的方式打印大小
--si #類似于-h,但使用國際單位制(1000的冪)
-D #列出文件或目錄的更改時間
-F #在執行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","@","|"號
--inodes #打印每個文件的索引節點號
--device #打印每個文件所屬的設備ID號
------- 排序選項 -------
-v #按字母數字對文件進行排序
-t #用文件和目錄的更改時間排序
-c #按最后的更改時間對文件進行排序
-U #天下黃河
-r #反轉排序順序
--dirsfirst #在文件之前列出目錄(-U禁用)
--sort X #選擇排序:名稱、版本、大小、時間、時間
------- 圖形選項 ------
-i #不以階梯狀列出文件和目錄名稱
-A #使用ASNI繪圖字符顯示樹狀圖而非以ASCII字符組合
-S #使用CP437(控制臺)圖形壓痕線打印
-n #始終關閉著色(-C覆蓋)
-C #在文件和目錄清單加上色彩,便于區分各種類型
------- XML / HTML / JSON選項 -------
-X #打印出XML表示形式的樹
-J #打印出JSON表示形式的樹
-H baseHREF #打印出以baseHREF為頂部目錄的HTML格式
-T string #將默認HTML標題和H1標頭替換為字符串
--nolinks #關閉HTML輸出中的超鏈接
---- 雜項選項 ----
--version #輸入版本信息
--help #打印使用幫助信息
-- #選項處理終止符
2.3.常見應用場景
1.查看項目核心結構(排除冗余目錄)
# 顯示Python項目前3層結構,排除虛擬環境、緩存和日志目錄
tree -L 3 -I "venv|__pycache__|logs" -d
2.生成帶文件大小的文檔目錄樹(用于說明文檔)
# 顯示docs目錄所有內容(包括隱藏文件),帶大小,不顯示統計,保存到文件
tree -a -h --noreport docs/ -o docs_tree.txt
3.篩選特定類型文件并顯示完整路徑
# 查找所有.sh腳本,顯示完整路徑,限制2層深度
tree -L 2 -f -P "*.sh"
4.查看目錄權限結構(系統管理)
# 查看/etc下的權限和目錄結構,先顯示目錄
tree -d -p --dirsfirst /etc -L 2
5.顯示文件權限、所有者和所有組(-p、-u、-g)
6.完整路徑顯示(-f)
7.輸出重定向(-o)
[root@blog ~]# tree -o structure.txt #將結果保存到文件#驗證
[root@blog ~]# cat structure.txt
.
├── anaconda-ks.cfg
├── dir1
│ ├── file1.txt
│ └── subdir
├── dir2
│ └── report.pdf
└── structure.txt3 directories, 4 files
8.以易讀的格式輸出文件目錄(-h)
[root@blog ~]# tree -h
.
├── [ 1.5K] anaconda-ks.cfg
├── [ 37] dir1
│ ├── [ 0] file1.txt
│ └── [ 6] subdir
├── [ 24] dir2
│ └── [ 0] report.pdf
└── [ 469] structure.txt3 directories, 4 files
9.生成JSON格式列表(-J)
10.查看文件占用空間大小
11.結合grep過濾內容
2.4.注意事項
1.超大目錄建議配合-L參數限制遍歷層數。
2.使用 tree | grep "files"可以顯示文件總數,輸出末尾會統計
3.tree命令若不添加任何選項,默認顯示當前目錄下所有可見文件和目錄(不含隱藏文件),并在末尾顯示統計信息(總目錄數、總文件數)。
3.Windows的tree工具
Windows 系統中的?tree
?工具主要用于在命令行(CMD 或 PowerShell)中以樹形結構展示目錄和文件,雖然功能不如 Linux 版本豐富,但足以滿足基礎的目錄可視化需求。
3.1.基礎語法
在?CMD 命令提示符?中直接使用(PowerShell 需通過兼容模式調用),基本格式:
tree [目錄路徑] [參數]
- 若不指定?
[目錄路徑]
,默認顯示當前目錄的結構。 - 若不添加參數,默認只顯示目錄(不包含文件),并在末尾顯示統計信息(總目錄數)。
3.2.核心參數詳解
Windows 的?tree
?工具參數較少,主要有以下 2 個常用參數:
參數 | 功能說明 | |
---|---|---|
/f | 顯示目錄結構的同時,包含所有文件(默認只顯示目錄)。 | |
/a | 用?ASCII 字符?顯示樹形邊框(如?+ 、- 、` | ),默認用 Unicode 字符(如? ├、 ─`)。適合在不支持 Unicode 的環境中使用(避免亂碼)。 |
3.3.常見應用場景
1.顯示當前目錄的目錄結構(不含文件)
tree卷 系統 的文件夾 PATH 列表
卷序列號為 XXXX-XXXX
C:\USER\PROJECT
├─docs
├─src
│ └─utils
└─tests
2.顯示當前目錄的完整結構(包含所有文件)
tree /f卷 系統 的文件夾 PATH 列表
卷序列號為 XXXX-XXXX
C:\USER\PROJECT
├─docs
│ └─README.md
├─src
│ ├─main.py
│ └─utils
│ └─helper.py
└─tests└─test_main.py
3.顯示指定目錄的結構(如 D 盤的 Downloads 文件夾)
tree D:\Downloads /f
作用:展示?D:\Downloads
?目錄下的所有子目錄和文件。
4.用 ASCII 字符顯示結構(避免 Unicode 亂碼)
tree /a 卷 系統 的文件夾 PATH 列表
卷序列號為 XXXX-XXXX
C:\USER\PROJECT
+---docs
+---src
| \---utils
\---tests
5.將目錄結構輸出到文件(用于保存或分享)
tree /f > 目錄結構.txt
作用:將當前目錄的完整結構(含文件)寫入?目錄結構.txt
?文件,方便在文檔中引用或發送給他人。
3.4.局限性與增強方案
Windows 原生?tree
?工具功能較簡單,不支持?以下功能:
- 限制顯示層級(如只顯示前 2 層);
- 過濾特定類型文件(如只顯示?
.txt
?文件); - 排除指定目錄(如忽略?
node_modules
); - 顯示文件大小、權限等屬性。
若需要更強大的功能,可安裝?類 Linux 的?tree
?工具:
1.先安裝 Windows 包管理器?Chocolatey(管理員 PowerShell 中執行):
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
2.安裝增強版?tree
:
choco install tree
3.使用方法與 Linux?tree
?完全一致(支持?-L
、-I
?等參數):
tree -L 2 -I "venv" # 顯示2層結構,排除venv目錄
4.Windows 與 Linux?tree
?的核心差異
特性 | Linux?tree | Windows 原生?tree |
---|---|---|
功能豐富度 | 高(支持過濾、大小顯示、深度控制等) | 低(僅基礎目錄樹顯示) |
隱藏文件顯示 | 支持(-a ?參數) | 不支持(需手動篩選) |
跨平臺一致性 | 各 Linux 發行版用法統一 | 僅 CMD 支持,PowerShell 需模擬 |
安裝需求 | 需手動安裝(多數系統) | 系統自帶(CMD 中) |
5.tree
工具優勢
1.直觀的層級可視化,一目了然
tree
?以樹形分支結構展示目錄和文件的層級關系,用線條(如?|
、├─
、└─
)清晰區分父子目錄,相比?ls -lR
?等命令輸出的平鋪式列表,能瞬間讓人理解目錄的嵌套邏輯。
例如,一個項目的樹形結構:
project/
├── src/
│ ├── main.py
│ └── utils/
│ └── helper.py
├── docs/
│ └── README.md
└── requirements.txt
這種結構比逐行查看路徑更易把握整體框架,尤其適合復雜項目(如代碼倉庫、多層級文檔)。
2.靈活控制顯示范圍,避免信息過載
tree
?支持通過參數精準過濾內容,只展示需要的信息,避免被冗余內容干擾:
- 限制深度:用?
-L N
(Linux)或通過工具擴展(Windows)控制顯示的層級(如只看前 2 層),適合大型目錄(如系統文件、深度學習項目)。 - 只看目錄 / 文件:用?
-d
(Linux)只顯示目錄,或結合?-f
?只關注文件,快速定位 “容器” 或 “內容”。 - 按名稱過濾:用?
-P 模式
(如?-P "*.py"
)只顯示特定類型文件,或?-I 模式
(如?-I "venv"
)排除冗余目錄(如虛擬環境、緩存文件夾)。
3.高效集成額外信息,一站式獲取關鍵數據
除了結構,tree
?能通過參數直接附加實用信息,無需額外命令:
- 文件大小:
-h
(Linux)以人類可讀單位(K、M、G)顯示大小,快速判斷大文件位置。 - 完整路徑:
-f
(Linux)顯示每個文件 / 目錄的絕對路徑,方便直接復制使用(如在腳本中引用)。 - 隱藏文件:
-a
(Linux)顯示?.gitignore
、.env
?等隱藏文件,避免遺漏關鍵配置。
4.?輕量快捷,跨場景適配性強
- 操作簡單:基礎用法只需?
tree [目錄]
,無需記憶復雜參數,新手也能快速上手。 - 跨平臺兼容:Linux、macOS(需安裝)、Windows(原生或第三方工具)均支持,習慣后可在不同系統中保持一致操作。
- 便于分享與存檔:輸出結果可直接重定向到文件(如?
tree > structure.txt
),用于文檔記錄、項目說明或遠程溝通(如向同事展示目錄結構)。
5.總結
??tree
?工具的核心優勢在于將復雜的目錄關系 “圖形化”,同時通過靈活的過濾和信息附加功能,幫助用戶在短時間內掌握目錄的整體結構、關鍵文件位置和必要屬性,大幅提升文件管理和項目梳理的效率,尤其適合開發者、運維人員或需要頻繁處理多層級文件的場景。
相關鏈接
Linux 教程 | 菜鳥教程