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

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

Peter S. 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’]

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…

On Jun 5, 2008, at 04:43 , Onur G. wrote:

Peter S. 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’]

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