萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 統計子目錄與檔案數量的實用指令比較

Linux 系統中目錄層級深、檔案數龐大,手動統計不切實際。本文比較 find、tree、du 三種指令的統計差異,並說明為何推薦使用 find 獲得最精確結果。

測試環境

以 pma 目錄為例,實際包含 124 個子目錄、987 個檔案。

find 指令(推薦)

統計子目錄數

[root@localhost ~]# find pma -type d | wc -l
125
[root@localhost ~]# find pma/ -type d | wc -l
125
[root@localhost ~]# find pma/* -type d | wc -l
124  # 正確值

差異原因:find pma 與 find pma/ 會將 pma 本身列入結果(首行輸出即為 pma),而 find pma/* 僅展開其下層,不含父目錄本身。

統計檔案數

[root@localhost ~]# find pma -type f | wc -l
987
[root@localhost ~]# find pma/ -type f | wc -l
987
[root@localhost ~]# find pma/* -type f | wc -l
987

檔案統計三種寫法結果一致,因 -type f 不會匹配目錄本身。

tree 指令(不推薦)

[root@localhost ~]# tree pma
...
124 directories, 984 files
[root@localhost ~]# tree pma/
...
124 directories, 984 files

tree 統計檔案數為 984,少於實際 987,原因未深究,但已證實不準確。

du 指令

[root@localhost ~]# du -ah pma/* | wc -l
1111

du 統計總項目數 1111,扣除子目錄 124,推算檔案數 987,與 find 一致。但需額外計算,不如 find 直觀。

結論

  • 子目錄數:使用 find 目錄/* -type d | wc -l
  • 檔案數:使用 find 目錄 -type f | wc -l
  • find 結果最準確、語意最清晰,建議作為標準做法。

圖示說明

Linux 統計目錄檔案數量示意圖

copyright © 萬盛學電腦網 all rights reserved