Ответ 1
Dir[]
принимает файл glob, поэтому, если ваш шаблон не слишком сложный, вы можете просто сделать:
Dir['public/abc123_*.log']
Подробнее glob info здесь.
Я пытаюсь проверить содержимое файла, созданного из кода. Проблема в том, что полное имя файла основано на отметке времени abc123_#{d.strftime('%Y%m%d%I%M%S')}.log
Как я мог использовать File
, чтобы найти этот файл и прочитать его? Я попытался сделать File.exists?()
с регулярным выражением в качестве параметра, но это не сработало.
Я нашел это в другом вопросе о stackoverflow:
File.basename(file_path).match(/_.*(css|scss|sass)/)
Как я могу использовать это в моем случае, когда файл находится в моей папке public
?
ANSWER
Итак, оба ответа ниже работают, и я использовал их комбинацию.
Dir['public/*.log'].select { |f| f =~ /purge_cc_website/}
*
действует как подстановочный знак, который является своего рода регулярным выражением сам по себе. После этого вы фильтруете массив с использованием реального регулярного выражения.
Dir[]
принимает файл glob, поэтому, если ваш шаблон не слишком сложный, вы можете просто сделать:
Dir['public/abc123_*.log']
Подробнее glob info здесь.
File
предназначен для чтения одного файла. Вам нужно использовать Dir
для поиска файлов по имени.
files = Dir['*'].select {|x| x =~ /_.*(css|scss|sass)/ }
Если вам нужен только последний файл в случае дубликатов:
files = Dir['*'].select {|x| x =~ /_.*(css|scss|sass)/ }.sort.last