如何在Ruby中自动查找当前目录或任意指定子文件夹中指定类型的文件?

发布于 2024-11-01 15:54:50 字数 471 浏览 8 评论 0原文

我正在使用以下代码将文件从 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

I am using the following code to convert files from php to html. In order for it to work, I have to enter the name of each file on the second line.

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

Can someone tell me how to make it so it will automatically find any .php files in the main directory and look in any defined folder and their sub-folders for additional .php and save them in similar folder names?

For example:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

欢你一世 2024-11-08 15:54:51

最简单的方法是使用 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** 模式(又名 Dir[])以递归方式匹配目录,因此 Dir[**/*.php ] 将为您提供当前目录下的所有 PHP 文件。

The easiest way is to use 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

The ** pattern for Dir.glob (AKA Dir[]) matches directories recursively so Dir[**/*.php] will give you all the PHP files under the current directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文