Ruby であるディレクトリ以下のファイル容量(duのような機能)をもっている関数(ライブラリ)あるでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/09/20 12:30:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:moro No.1

回答回数23ベストアンサー獲得回数10

ポイント35pt

http://www.ruby-lang.org/ja/

ライブラリではないですが、

ruby -e 'p Dir.glob("./**/*").inject(0){|r,i| r += File.size(i)}'

などではいかがでしょうか?

id:isogaya

とりあえず、これでよさげですね。関数があるかと思ったのですが。

2007/09/13 15:06:31
id:aqulic No.2

回答回数4ベストアンサー獲得回数0

ポイント35pt

Rubyリファレンス

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A...

単純にsystem関数、あるいは、

ret = `/usr/bin/du /home`

ret.each {|a|

p a #加工

}

とか。バタくさい方法ですが...

  • id:isogaya
    top レベルからやったらちょっとつらかったです。(当たり前ですが)
  • id:isogaya
    du と値がちょっと違ったりするみたいですね。
  • id:GEN111
    Ruby も UNIXコマンドもよく知らないのであてずっぽうですが、
    `du -s PATH` から正規表現で結果を取り出すのはどうなんでしょうか。
  • id:moro
    あ〜確かに。
    duはblocksizeでとるので、512byte単位のブロックがいくつあるのか、という値が返ってきます。
    対してFile.sizeはバイト数を返しており、それを足したのが私の回答でした。

    あるディレクトリ以下のファイルサイズの合計であれば私の回答で、あるディレクトリ以下のファイルが占有しているHDD容量の合計であればduを使う方法で、それぞれ求められると思います。

    問題を読み違えていたようでしたら申し訳ありません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません