"Mark Wilson" <mwilson13 / cox.net> schrieb im Newsbeitrag
news:B991E5D0-E8CD-11D7-85D0-000393876156 / cox.net...
> Hello,
>
> I'm trying to do the following in Ruby using the Shell class:
>
>  From the command line, I would write this:
>
> % grep -l PATTERN * | xargs mv --target-directory=DIRECTORY
>
> Because I have many directories I want to visit in turn, I've tried the
> following:
>
> directories.each do |d|
>    shell = Shell.cd(d)
>    string = String.new
>    shell.transact do
>      string = shell.grep("-l", "PATTERN", "*")  # => the '*' is not
> expanded;
>                                                                    #
> grep: *: No such file or directory
>    end
>    array = string.split
>    array.each { |e| File.move(e, "DIRECTORY") }
> end
>
> The above does not work. Does anyone have any insight (or alternate
> ways to accomplish the same purpose in Ruby)?

untested:

def fileGrep(file, pattern)
  File.open(file) do |f|
    f.each_line do |line|
      line.chomp!
      # exit as soon as possible
      return true if pattern =~ line
    end
  end

  false
end

directories.each do |d|
  Dir.foreach( d ) do |file|
    File.rename( File.join( d, file ), File.join( TARGET_DIR, file ) ) if
fileGrep( file, /PATTERN/ )
  end
end

Regards

    robert