我正在使用此命令來查找所需的資料夾並計算大小。
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 版本的find
和du
。
答案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;
我一直在使用它,比任何自訂 bash 更容易、更快。 (可以瀏覽目錄,節省大量時間)。