2011-06-30 6 views

答えて

1

私はあなたがあまりにも持っていない限り、ルビーでこれをやっていない推薦

は...一般的に私はいないだろう - 私は、シェル・ユーティリティーを使用すると思います。真剣に。

また、コメントを挿入しますか?などなど

これに非常に良い答えがここにルビーを使用していない、あります:How to count all the lines of code in a directory recursively?

私は実際に私はこれを行うだろうと、それを行う意図でこれを近づいた場合:

Dir['**/*.*'].each do |fname| 
    puts "#{fname} #{linecount(fname)}" 
end 

LINECOUNTは、あなたが、それだけで配列がどのくらい見にメモリにファイル全体を読み込むので、これは、方法によって厄介なハックです

def linecount(fname) 
    File.open(fname, "r") do |f| 
    return f.readlines.length 
    end 
end 

ようなものになるだろうあなたが読んでいる間、それぞれの行を取得して数えたいかもしれません。

カウンタを増分するだけで、コメントだけの空白や行を取り除くことができます。

私は途中でその正規表現をテストしていない

lines = f.readlines 
lines.delete_if { |l| l =~ /^[[:space:]]*#|^$/ } 
return lines.length 

ような何か。 D

2

http://www.ruby-doc.org/stdlib/libdoc/find/rdoc/classes/Find.html

モジュール。

このページの例は、ディレクトリ内のすべてのファイルのサイズを取得する例を示しています。総ラインを数えるためにそれを変更するのはかなり簡単です。

wc -l `find /path/to/dir -type f` | tail -1 
1

@Ghotiが、私はこれを追加します。あなたはプットの端に配置する必要があるの文は「が」ディレクトリにbarfingそれを止めるために何かを仕事 - 読者の練習として

あなたのコメントですが、十分なステータスがありません。

File.fileを使用しますか?とFile ::ディレクトリ?あなたはディレクトリに深く掘り下げてファイルを読む必要があるかどうかを知ることができるように、2つを区別するのに役立ちます。

+0

さて、穴あけはそのDir []ステートメントによって行われますが、バイナリファイルではなく、ディレクトリにputsを呼びたくない場合もあります。 :D – Ghoti

+0

あなたがディレクトリを置くことができ、それがすべてのファイルを置くことができるならそれはかなり滑らかな機能でしょう;-) – scradge

関連する問題