[Ruby] Re: [Ruby] Re: [Ruby] Re[2]: [Ruby] Обход директорий и вытаскивание из них полных путей файлов

SoNaR sonar at scli.ru
Wed Jun 11 13:12:13 MSD 2003


Hello SoNaR,

Wednesday, June 11, 2003, 1:04:38 PM, you wrote:

S> Hello SoNaR,

S> Wednesday, June 11, 2003, 12:58:29 PM, you wrote:

S>> Hello Sergei,

S>> Wednesday, June 11, 2003, 12:38:13 PM, you wrote:

SO>>> SoNaR wrote:

>>>>Hello ruby,
>>>>
>>>>  Есть директория с множеством поддиректорий. Как красиво осуществить
>>>>  обход по дереву каталогов и на выходе иметь массив с полными именами
>>>>  файлов.
>>>>
>>>>  
>>>>
SO>>> 1. man find
SO>>> 2. popen("find ...")

S>> А если в винде и не прибегая к помощи внешних утилит? Только
S>> средствами Ruby?

S> Пока ждал ответа уже сам написал... Не знаю насколько это красиво, но
S> памяти жрет будь здоров.
S> BASE = "z:/DATABASES/Kodweb/update2old"

S> def findFiles( base = BASE)
S>         result1 = Array.new
S>         Dir.new( base ).each{ |dof| result1 << (base + "/" + dof) if (dof != ".")and(dof != "..") }
S>         result2 = Array.new
S>         result1.each{ |dof| 
S>                 if File.stat(dof).directory?
S>                         result2 << findFiles( dof )
S>                 else
S>                         result2 << dof
S>                 end
S>         }
S>         return result2
S> end

S> p findFiles.flatten

Окончательный красивый вариант.

require "find"

Find.find( BASE ) do |f|
  puts f if not File.stat(f).directory?
end


-- 
Best regards,
 SoNaR                            mailto:sonar at scli.ru




More information about the Ruby mailing list