総ディレクトリサイズ

総ディレクトリサイズ

複数の.NETプロジェクトを含むフォルダがあります。これを親ディレクトリと呼びますprojects。すべての.NETプロジェクトには、そのbinプロジェクト用にビルドされたバイナリを含むフォルダがあります。これで、このすべてのフォルダのファイルサイズの合計を取得したいと思います。

これまで、bin各ディレクトリのリストを取得できます

du -h | grep 'bin$'

これは各ディレクトリのサイズbinとそのディレクトリへのパスを提供します。

これをどのように要約しますか?ただ使ってもいいですか?duそれとも別のツールにパイプする必要がありますか?

答え1

-hディレクトリのサイズによって単位が異なるため、使用しないことをお勧めします。を使用すると、-bサイズがバイト単位で提供され、必要に応じて変換できます。これはLinuxです。オプションがあります。

du -b | awk '/bin$/{print $1'} | paste -sd+ - | bc

du -b | awk '/bin$/{Total=Total+$1} END {print "Total "Total" bytes"}'

答え2

-s)を使用して各ディレクトリの要約値を取得し(サブディレクトリを印刷せず)、(-c)を使用して合計を取得できます。エントリが多すぎない場合は、各ディレクトリをパラメータとして渡します。たとえば、次のようになります。

$ du -hsc projects/projectone/bin projects/projecttwo/bin
30M projects/projectone/bin
2.0M    projects/projecttwo/bin
32M total

構造が異なるディレクトリが多い場合とfind以下を使用してくださいdu

$ find projects -type d -name bin -exec du -hsc {} +

合計値だけが必要な場合は、コマンドをパイプしてawk最後の行の最初のフィールドを印刷します。

... | awk 'END{ print $1 }'

関連情報