GNU/Linux >> Linux の 問題 >  >> Linux

du のすべての数値を合計する

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

Linux
  1. ファイル内のすべての数値をすばやく合計するにはどうすればよいですか?

  2. すべてのサブディレクトリで wc を使用して、行の合計を数えます

  3. bash の文字列からすべての特殊文字と大文字と小文字を削除します

  1. すべてのファイルを現在のディレクトリから上位ディレクトリに移動する方法は?

  2. Zypper:特定のリポジトリからすべてのパッケージを表示するにはどうすればよいですか?

  3. APT リポジトリからすべてのパッケージをインストールすることは可能ですか?

  1. nano を使用してファイルからすべてのテキストを選択するにはどうすればよいですか?

  2. Linux bash ターミナルからすべての MongoDB データベースを一覧表示する

  3. コマンド ラインからのすべてのパーティションの削除