Подтвердить что ты не робот

Что такое Ruby-эквивалент Python os.walk?

Кто-нибудь знает, есть ли существующий модуль/функция внутри Ruby для перемещения каталогов и файлов файловой системы? Я ищу что-то похожее на Python os.walk. Самый близкий модуль, который я нашел, - Find, но для выполнения обхода требуется дополнительная работа.

Код Python выглядит следующим образом:

for root, dirs, files in os.walk('.'):
    for name in files:
        print name
    for name in dirs:
        print name
4b9b3361

Ответ 1

Далее будут рекурсивно распечатываться все файлы. Затем вы можете использовать File.directory? чтобы узнать, является ли это каталогом или файлом.

Dir['**/*'].each { |f| print f }

Ответ 2

Find кажется мне довольно простым:

require "find"
Find.find('mydir'){|f| puts f}

Ответ 3

require 'pathname'

def os_walk(dir)
  root = Pathname(dir)
  files, dirs = [], []
  Pathname(root).find do |path|
    unless path == root
      dirs << path if path.directory?
      files << path if path.file?
    end
  end
  [root, files, dirs]
end

root, files, dirs = os_walk('.')