如何遞歸計算目錄中僅某些檔案消耗的磁碟空間?
答案1
find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1
-iname
搜尋不區分大小寫-print0
寫入NUL
而不是換行--files0-from=-
NUL
讀取而不是換行符,從參數中讀取stdin
而不是從參數中讀取-h
以人類可讀的格式輸出結果(例如,1K
而非1024
)-c
輸出總計(例如,23G
)tail -1
將僅輸出總計,抑制單一檔案大小
答案2
和zsh
:
zmodload zsh/stat
stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))
將列印名稱以 結尾的所有檔案.jpg
(包括帶有限定符的隱藏檔案D
)的累積磁碟使用量。請注意,如果同一個文件有多個硬鏈接,則它們的磁碟使用量將被計算多次(這與大多數du
實現的做法不同)。
如果某些文件是或鍵入目錄,這只會計算目錄檔案本身的磁碟使用情況,而不是遍歷這些目錄時可以找到的檔案的磁碟使用情況(與 的另一個區別du
)。