2010-03-05 1 views
0

Я использую команду split linux для разделения огромных xml-файлов на узловые. Проблема теперь в том, что у меня есть каталог с сотнями тысяч файлов.ruby ​​- получить файл из каталога без указания всего содержимого

Я хочу, чтобы получить файл из каталога (чтобы перейти к другому процессу для импорта в нашу базу данных), не нужно перечислять все в нем. Так ли работает Dir.foreach? Любые другие идеи?

+0

Dir.foreach - правильное решение, если вы собираетесь обрабатывать все файлы. Возможно, вам захочется использовать уникальный подкаталог для всех файлов-узлов родительского xml-файла (при использовании разделения Linux). – klochner

+0

Да, это хорошая идея, но она лишь частично решает проблему, потому что один файл намного больше, чем другие. –

ответ

3

Вы можете использовать Dir.glob, чтобы найти файлы, в которых вы нуждаетесь. Подробнее here, но в основном, вы передаете ему шаблон, как Dir.glob 'dir/*.rb', и получите обратно имена файлов, соответствующие этому шаблону. Я предполагаю, что это сделано достаточно разумно, но это будет зависеть от вашей платформы и реализации.

Что касается Dir.foreach, это также должно быть эффективным - проблема была бы в том, что она должна обрабатывать всю директорию для каждого прохода вокруг цикла. Но это будет ужасная реализация, и это не так.

Смежные вопросы