Linux
將“du”中的所有數字相加
我們想計算我們從中得到的第一個數字
du
du -b /tmp/* 6 /tmp/216c6f99-6671-4865-b8bc-7205f5388752_resources 668669 /tmp/hadoop7887078727316788325.tmp 6 /tmp/hadoop-hdfs 42456 /tmp/hive 32786 /tmp/hsperfdata_hdfs 6 /tmp/hsperfdata_hive 32786 /tmp/hsperfdata_root 262244 /tmp/hsperfdata_yarn
所以最終總和將是
sum=6+668669+6+42456+32786+6+32786+262244 echo $sum
我們如何通過 awk 或 perl 來做到這一點?
在 AWK 中:
{ sum += $1 } END { print sum }
所以
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
/tmp
請注意,如果目錄下的目錄本身俱有子目錄,則結果將不正確,因為du
會在目錄及其子目錄上生成執行總計。
du -s
將為您正確計算總和(在 中的所有子目錄和文件/tmp
,包括隱藏的文件):du -sb /tmp
並將
du -c
正確計算列出的目錄和文件的總和:du -cb /tmp/*
您還可以使用
du -c
. 即使 的參數du
不是目錄,這也有效,但 的情況並非如此du -s
:$ du -sb file1 file2 17 file1 18 file2 $ du -cb file1 file2 17 file1 18 file2 35 total
順便說一句,對於互動式使用,我建議添加
-h
選項而不是-b
塊大小的任何其他乘數。這將以人類可讀的單位格式列印尺寸。$ du -ch file1 file2 4.0K file1 4.0K file2 8.0K total