Ruby reading files in many directories

Hi,

i have a question. I have a working script, that scans some txt files in
a directory ,reads the lines and gives a few of that lines out in new
files.
But now, i wanted to scan the full subdirectorys for txt files. And copy
some lines out of that files. The files are in different directorys
belonging to the same subdirectory.

for example
\subdirectory1\txtdirectory1
\subdirectory1\txtdirectory2
\subdirectory1\txtdirectory3

\subdirectory2\txtdirectory1
\subdirectory2\txtdirectory2
\subdirectory2\txtdirectory3
and so on

i used from wiki the example

Dir['*.txt'].each do |txt|
  next unless File.file?(txt)

but this only scans the same directory the ruby file is in.
Now i changed this in

Dir['/nameofdirectory/*.txt'].each do |txt|

this doesnt work.
then i tried
Dir['*.txt'].each do |txt|
next file.directory(".")

At the end I also wanted to copy the processed files into a new
directory.
Its no problem with
File.new("newfile", "w+") or file.new to make new datas, but i cant
change the directory with file.open.
the directory should be called converted or so on and should be in
subdirectory1\converted
...
I needed hours to get run the script in the same directory and spent
also hors to get that run with different directorys. But i didnt
finished the script.
Thank for answers.
Cheers
Bastian

···

--
Posted via http://www.ruby-forum.com/.

Try this:

def scan_file(file_name)
  if File.ftype(file_name) == 'file'
    puts file_name
  elsif File.ftype(file_name) == 'directory'
    Dir[file_name + "/*"].each { |f| scan_file(f) }
  end
end
scan_file(ARGV.first)

call: ruby test.rb /somedir

by
TheR

···

--
Posted via http://www.ruby-forum.com/.

Peter Smith wrote:

Hi,

i have a question. I have a working script, that scans some txt files in
a directory ,reads the lines and gives a few of that lines out in new
files.
But now, i wanted to scan the full subdirectorys for txt files. And copy
some lines out of that files. The files are in different directorys
belonging to the same subdirectory.

try this:
Dir['./**/*.txt']

···

--
Posted via http://www.ruby-forum.com/\.

well... you have to deal with the top level dir as well:

   Dir['./**/*.txt'] + Dir['*.txt']

that's always bugged me about "**".

You can also use find for more flexibility:

   require 'find'

   txt =

   Find.find(".") do |path|
     Find.prune if File.basename(path)[0] == ?.
     txt << path if path =~ /txt$/
   end

···

On Jun 5, 2008, at 04:43 , Onur Gungor wrote:

Peter Smith wrote:

i have a question. I have a working script, that scans some txt files in a directory ,reads the lines and gives a few of that lines out in new
files. But now, i wanted to scan the full subdirectorys for txt files. And copy some lines out of that files. The files are in different directorys belonging to the same subdirectory.

try this:
Dir['./**/*.txt']

try this:

..

hello thanks for the answers I will try this tomorrow.
I helped me with a dirthy solution. The script is needed for windows, so
i wrote a batch file, now it works but this solution is only a rescue
aid. I am very new on ruby, so I will try and learn...

···

--
Posted via http://www.ruby-forum.com/\.