遞歸尋找目錄的大小並獲得總計

遞歸尋找目錄的大小並獲得總計

我正在使用此命令來查找所需的資料夾並計算大小。

find . -type d -name 'tmp_c*' | xargs du -hcs {} \; + 

我的 find 版本不支援 -exec。但是,這有效。但是我不確定它是否為我提供了包含搜尋字串的目錄的正確總數。當我運行命令並通過管道傳輸到 less 時,我看到它計算每個資料夾的大小,然後它經常輸出總數。像這樣:

140K    ./r/g/userid/attach/tmp_c_241091464_2
68K     ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G    total

如果我將輸出重定向到一個文件,然後 grep 總計,我會得到以下結果:

2.3G    total
978M    total
1.1G    total
2.0G    total
1.1G    total

思考這給了我正確的數字。但是,我如何才能更進一步地執行此命令,並使其在一行上匯總總計?

答案1

find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -

這假設(夠新?)GNU 版本的finddu

答案2

這應該可以工作,在我的 EL4 盒子上測試過...這是我擁有的最舊的盒子,讓我感到畏縮,我不知道你如何使用 EL3。

find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1

完成了coreutils-4.5.3-26

答案3

https://stackoverflow.com/a/1323769/799204

一種替代解決方案是使用 awk:

但腳本必須針對這種情況進行調整,請嘗試

find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'

輸出將以十進位表示

答案4

我檢查了 epel 從 5 開始,而不是 3,所以唯一的選擇是自訂腳本。

也可以安裝 ncdu;

https://dev.yorhel.nl/ncduit

我一直在使用它,比任何自訂 bash 更容易、更快。 (可以瀏覽目錄,節省大量時間)。

相關內容