"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