image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ: RubyKaigi2007発表者のブログ一覧, Google Analytics のTips, etc... | トップページ | ピックアップ:麻生久美子さんインタビュー, SafariブラウザをWindows対応に, etc... »

2007-06-12

ruby で find + grep

ある文字列を含む行を再帰的に検索したくなった。

unix なら
  $ find . -name ¥*.xml| xargs grep version
のようにすれば済む要求だ。

windows ではどうすればよいか。
eclipse の file 検索でもいいが、コマンドファイルを作っておきたい。

すこし ruby のライブラリーを調べて次のようにしてみた。
(自宅では Mac しかないので、windows 上のruby で動作するからは会社でないとチェックできないけど)

require 'find'

def my_grep_version(path, reg)
  File.read(path).grep(reg) {|line|
    puts "#{path}¥t#{line}"
  }
end

Find.find(File.expand_path('.')) {|path|
  my_grep_version(path, /version/) if File.fnmatch("*.xml", path)
}

ruby (1.8.6) でも jruby (1.0) のどちらでも動作するようだ。

汎用的にするには、コマンドラインでファイル名パターンや検索文字列を得るようにするべきだが、今回はそこまでする必要は無い。
やるとしたら、zip などのファイルの中身もできるようにすることだ。
この拡張については、後日 やってみよう。

« ピックアップ: RubyKaigi2007発表者のブログ一覧, Google Analytics のTips, etc... | トップページ | ピックアップ:麻生久美子さんインタビュー, SafariブラウザをWindows対応に, etc... »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/15409089

この記事へのトラックバック一覧です: ruby で find + grep:

« ピックアップ: RubyKaigi2007発表者のブログ一覧, Google Analytics のTips, etc... | トップページ | ピックアップ:麻生久美子さんインタビュー, SafariブラウザをWindows対応に, etc... »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク