かしいのはてな

技術ブログ備忘録用

特定のフォルダ以下でのディスク容量

そもそもの始まりは

 という自分のTweet。 

どうも実行結果が計算合わない。。

 

 

現在のサーバを、どの程度ディスク容量使っているのかを調べるのに自分はよく

$ df -h

を使います。

このdf コマンドは実バイトを返さないということを知ったので詳細なデータを知りたい場合、例えば画像フォルダが何十万とあるフォルダ以下のバイト数を調べるにはどうしたらいいのか。

 

1. find DIR -type f | wc -c

自分が最初に行ったパターンです。明らかに違いました。この場合だと、参照先のファイル名の長さの総和に確かになってました。。

 

2. find DIR -type f | xargs ls -l | awk '{sum+=$5}END{print sum}'

このパターンは、Twitterで教えていただきました。この場合うまくいきました。この場合だと、ls -l で隠しファイルを含めないので純粋に画像のバイト数の総和を出すことが出来ました。

 

3. find DIR -type f | xargs wc -c | grep total | awk '{sum+=$1}END{print sum}'

wc -c でバイト数を計算する方法です。ただ、grep total | awk '{sum+=$1}END{print sum}' をつけないとwc -c | tail -n 1 の場合だと、うまくいかなかったのですがこちらに関しても教えてくださいました。

 

 

4. du -sh DIR

こちらの場合ですと、隠しフォルダのバイト数も含まって純粋な画像データとしては出せませんがシンプルという意味では使えるかなと思いました。

 

 

 

コマンドを扱う場合にオーバーフローが起こる可能性や、コマンド最大長があるということも知っていい勉強になりました。