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
簡単に使用できます:
du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'
ワイルドカードを使用していない場合、/tmp のようなディレクトリ名を使用している場合 du -b /tmp が出力されるため、最後のエントリを避ける必要があります。 次のようなものです:
size1 file1
size2 file2
size_total .
したがって、この最後のエントリを避ける必要があるため、以下を使用してください:
du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'
ただし、 -s も使用できます オプションを使用すると、要約が計算されます。値を追加する必要はありません。最後の値を出力するだけです。つまり:
du -s directory