だらだらやるよ。

こげつのIT技術メモ

ちょっとしたスクリプトを書きました。

指定したディレクトリ内にある特定拡張子のファイルの行数を数えたかったので作りました。
ちゃんと動いているのは確認したのですが
もっと簡単な書き方絶対あるよね。。。教えて誰か!

def recursive_dir(path)
	cnt = 0
  Dir::foreach(path) do |v|
    next if v == "." or v == ".."
    if path =~ /\/$/
      v = path + v
    else
      v = path + "/" + v
    end
    if FileTest::directory?(v)
      cnt = cnt + recursive_dir(v)
    else
    	ext = ".xxx"
    	next unless v[v.length-ext.length..v.length-1]==ext#特定拡張子のファイルのみ
    	c = IO.readlines(v).length
    	cnt = cnt + c
    	p v + " " + c.to_s
    end
  end
  return cnt
end


fullcnt = recursive_dir "トップディレクトリのパス"
p "full_count : " + fullcnt.to_s