--Multipart_Sun_Feb_15_01:03:06_1998-1
Content-Type: text/plain; charset=ISO-2022-JP

前田です。

In message "[ruby-list:6373] call for scripts"
Yukihiro Matsumoto <matz / netlab.co.jp> wrote:

|今夏任鯡椹悗靴択磔本の原稿をい討い觝Fこの頃ですが;
ぢ実例いう章を作ろうと思いました.が,手元にあるものよりも
|もっと良いものがあるかもしれないと考え,実例載せられるよ
|うなrubyスクリプトを募ます.

Jedに付いているrgrep風のスクリプトをい討澆泙靴拭
肝心の部分はsystem("grep", ...)です:-)
一応イテレータ(の定義)の例題のつもりです。
ちなみにrgrepのrはたぶんrubyじゃなくて(当たり前か)recursiveだと
思います。


*使い方の説明*

基本的にgrepと同じですが、ファイル名の代りにディレクトリを指定
すると、再帰的にgrepします。


--Multipart_Sun_Feb_15_01:03:06_1998-1
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="rgrep"
Content-Transfer-Encoding: 7bit

#!/usr/local/bin/ruby

GREP_CMD  grep"
GREP_ARGS  ]

def foreach_files(path)
  if path[-1] ?/
      path  ath[0..-2]
  end
  if FileTest.directory?(path)
    Dir.foreach(path) do |file|
      if file ! ." and file ! .."
	foreach_files(path + "/" + file) do |file|
	  yield(file)
	end
      end
    end
  else
    yield(path)
  end
end

while arg  RGV.shift and arg /^-/
  GREP_ARGS.push(arg)
  if arg /^-[ABef]/
    optarg  RGV.shift
    unless optarg
      STDERR.print("grep: option requires an argument -- #{arg[1..-1]}\n")
      system(GREP_CMD, '-h')   # print usage
      exit(1)
    end
    GREP_ARGS.push(optarg)
  end
end
GREP_ARGS.push(arg) if arg   # expr

for path in ARGV
  foreach_files(path) do |file|
    GREP_ARGS.push(file)
  end
end
system(GREP_CMD, *GREP_ARGS)

--Multipart_Sun_Feb_15_01:03:06_1998-1
Content-Type: text/plain; charset=ISO-2022-JP


|  採用された人にはruby本を著者献本します

僕もサイン入りが欲しいです:-)

-- 
前田 

藍踉蜷癇灑釼薙矍欝澎浦鯵紺襟厩晃鵜