ruby reading files in many directories

P

Peter Smith

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
 
D

Damjan Rems

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
 
O

Onur Gungor

Peter said:
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']
 
R

Ryan Davis

Peter said:
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
 
B

Bastian G.

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...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,732
Latest member
ArronPalin

Latest Threads

Top