Я пытаюсь найти все файлы определенного типа (скажем, .pdf) в данной папке и скопировать их в новую папку. Что мне нужно сделать, это указать корневую папку и выполнить поиск в этой папке и во всех ее подпапках любых файлов, соответствующих данному типу (.pdf). Может кто-нибудь подсказать мне, как мне искать в подпапках корневой папки, их подпапках и так далее. Звучит так, будто рекурсивный метод справился бы с задачей, но я не могу правильно ее реализовать? (Кстати, я реализую эту программу в ruby).
Вам нужен модуль Найти . Find.find
принимает строку, содержащую путь, и передает родительский путь вместе с путем каждого файла и подкаталога в сопутствующий блок. Пример кода:
require 'find'
pdf_file_paths = []
Find.find('path/to/search') do |path|
pdf_file_paths << path if path =~ /.*\.pdf$/
end
Это будет рекурсивно искать путь и сохранять все имена файлов, заканчивающиеся на .pdf, в массиве.
Попробуйте следующее:
Dir.glob("#{folder}/**/*.pdf")
то же самое, что и
Dir["#{folder}/**/*.pdf"]
, где переменная папки - это путь к корневой папке, в которой вы хотите выполнить поиск.