我々が得た最初の数を計算したいと思います。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 onelinerでこれを行うにはどうすればよいですか?
ベストアンサー1
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/*