Поиск в папке и во всех ее подпапках файлов определенный тип

Я пытаюсь найти все файлы определенного типа (скажем, .pdf) в данной папке и скопировать их в новую папку. Что мне нужно сделать, это указать корневую папку и выполнить поиск в этой папке и во всех ее подпапках любых файлов, соответствующих данному типу (.pdf). Может кто-нибудь подсказать мне, как мне искать в подпапках корневой папки, их подпапках и так далее. Звучит так, будто рекурсивный метод справился бы с задачей, но я не могу правильно ее реализовать? (Кстати, я реализую эту программу в ruby).

65
задан agentbanks217 17 August 2010 в 00:48
поделиться

2 ответа

Вам нужен модуль Найти . Find.find принимает строку, содержащую путь, и передает родительский путь вместе с путем каждого файла и подкаталога в сопутствующий блок. Пример кода:

require 'find'

pdf_file_paths = []
Find.find('path/to/search') do |path|
  pdf_file_paths << path if path =~ /.*\.pdf$/
end

Это будет рекурсивно искать путь и сохранять все имена файлов, заканчивающиеся на .pdf, в массиве.

61
ответ дан 24 November 2019 в 15:12
поделиться

Попробуйте следующее:

Dir.glob("#{folder}/**/*.pdf")

то же самое, что и

Dir["#{folder}/**/*.pdf"]

, где переменная папки - это путь к корневой папке, в которой вы хотите выполнить поиск.

103
ответ дан 24 November 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: