2009-12-30 4 views
2

Я хочу захватить список всех файлов под определенным каталогом. Dir.glob отлично работает, но, похоже, нет способа ограничить результаты только файлами (за исключением каталогов).найти. -type f in ruby ​​

Heres то, что я прямо сейчас:

files = Dir.glob('my_dir/**/*').reject { |f| File.directory?(f) } 

Есть ли более элегантный способ для достижения этой цели?

ответ

2

Это на самом деле довольно эффективный способ идти об этом, но вы также можете использовать модуль Find:

require 'find' 

found = [ ] 

Find.find(base_path) do |path| 
    found << path if (File.file?(path)) 
end 
+0

+1: Я всегда забыть о 'find' библиотеки, но это действительно самый (в терминах времени программиста, во всяком случае) способ переноса выражения POSIX 'find' в Ruby. –