如何計算按模式(例如*.JPG)過濾的磁碟使用情況?

如何計算按模式(例如*.JPG)過濾的磁碟使用情況?

如何遞歸計算目錄中僅某些檔案消耗的磁碟空間?

答案1

find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1

  1. -iname搜尋不區分大小寫
  2. -print0寫入NUL而不是換行
  3. --files0-from=-NUL讀取而不是換行符,從參數中讀取stdin而不是從參數中讀取
  4. -h以人類可讀的格式輸出結果(例如,1K而非1024
  5. -c輸出總計(例如,23G
  6. tail -1將僅輸出總計,抑制單一檔案大小

答案2

zsh

zmodload zsh/stat

stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))

將列印名稱以 結尾的所有檔案.jpg(包括帶有限定符的隱藏檔案D)的累積磁碟使用量。請注意,如果同一個文件有多個硬鏈接,則它們的磁碟使用量將被計算多次(這與大多數du實現的做法不同)。

如果某些文件是或鍵入目錄,這只會計算目錄檔案本身的磁碟使用情況,而不是遍歷這些目錄時可以找到的檔案的磁碟使用情況(與 的另一個區別du)。

相關內容