system management
1753483 メンバー
4058 オンライン
108794 解決策
新規ポスト

ディレクトリ以下のサイズ調査

 
komutan
アドバイザー

ディレクトリ以下のサイズ調査

お世話になります。

たとえば、/sssというディレクトリ以下で特定のファイル(拡張子はすべて.tmp)をのぞいた、全サイズを調べる場合のコマンドを教えていただけないでしょうか?

宜しくお願いします。
5件の返信5
TakeUme
時折のアドバイザー

ディレクトリ以下のサイズ調査

概容量であれば

du /対象ディレクトリ

コマンドでブロックサイズを調べる方法があります。

詳細は、

http://docs.hp.com/ja/B2355-90850/du.1.html

を参照ください。

komutan
アドバイザー

ディレクトリ以下のサイズ調査

TakeUmeさん ありがとうございます。

duでも良いのですが、特定のファイル(拡張子.tmp)を除いた全容量の結果表示をしたいと

考えております。

宜しくお願いします。
nt
貴重なコントリビューター

ディレクトリ以下のサイズ調査

ベタな回答ですが、

ls -asR /sss | awk '/\.tmp$/ {size += $1} END {print size}'

とやって、その値を du /sss の結果から引く。

komutan
アドバイザー

ディレクトリ以下のサイズ調査

lsコマンドオプションででディレクトリ階層もリストできるのは知りませんでした。

上記コマンドで解決できそうです。

ありがとうございました。
nadachi
レギュラーアドバイザー

ディレクトリ以下のサイズ調査

少しずつやっていくのはいかが?

まず "/sss の下で、'*.tmp' というファイル名を全部表示する。

$ find /sss -type f -name '*.tmp'

( -type f ... レギュラーファイル

-name '*.tmp' ... ファイル名のパターン)

"/sssの下で、'*.tmp"というファイル名を除いたファイル名を表示する。

$ find /sss -type f ! -name '*.tmp'

( ! - name '*.tmp' で、"NOT" の意味に。)

"/sssの下で、"*.tmp"というファイル名を

除いたファイルのサイズを表示する"

$ find /sss -type f ! -name "*.tmp" -exec ll {} \;

( -exec ll {} \; で、各ファイルに対し 

"ll" コマンドを実行します。)

ll リストの 5番目が、ファイルのbyte カウント

ですから、それを総計すればよい。例えば、出力をパイプでつないでawkを使うとすると、

$ find /sss -type f ! -name '*.tmp' -exec ll {} \; | awk '{ S += $5 } END { printf("%d\n", S)}'

  人によりそれぞれの流儀があるでしょうし、"Perlで組んでしまったほうが楽だ" という人もいらっしゃるでしょうから、参考まで。