複数の.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 }'