Как автоматически найти файлы указанного типа в текущем каталоге или любых указанных подпапках в Ruby? - PullRequest
0 голосов
/ 15 апреля 2011

Я использую следующий код для преобразования файлов из PHP в HTML. Чтобы это работало, я должен ввести имя каждого файла во второй строке.

p "convert files"
%w(file1 file2 file3).each do |name|
  system %(php #{DIR}/#{name}.php > #{DIR2}/#{name}.htm)
end

Может кто-нибудь сказать мне, как сделать так, чтобы он автоматически находил любые файлы .php в главном каталоге, просматривал любую определенную папку и их подпапки на наличие дополнительных файлов .php и сохранял их в похожих именах папок?

Например:

file1.php -> file1.htm
about-us/file2.php -> about-us/file2.htm
contact-us/department/file3.php -> contact-us/department/file3.htm

1 Ответ

1 голос
/ 15 апреля 2011

Самый простой способ - использовать Dir:

Dir.chdir('where_the_php_files_area')
Dir['**/*.php'].each do |php|
    htm = 'where_the_html_files_should_go/' +  php.sub(/\.php$/, '.htm')
    system("php #{php} > #{htm}")
end

Шаблон ** для Dir.glob (AKA Dir[]) рекурсивно сопоставляет каталоги, поэтому Dir[**/*.php] выдаст вам все файлы PHP в текущем каталоге.

...