Ruby 重命名多个*.html.erb文件
我有文件夹>子文件夹,其中存储了*html.erb文件,我需要将其重命名为*.haml扩展名Ruby 重命名多个*.html.erb文件,ruby,Ruby,我有文件夹>子文件夹,其中存储了*html.erb文件,我需要将其重命名为*.haml扩展名 \folder \folder \*html.erb \*html.erb \*html.erb \*html.erb \folder \ ### \ ### \ ### \folder 我想专门使用Ruby脚本执行此任务。 到目前为止,我有以下Ruby脚本: f_p = "/home/ocean/Documents/testr/"
\folder
\folder
\*html.erb
\*html.erb
\*html.erb
\*html.erb
\folder
\ ###
\ ###
\ ###
\folder
我想专门使用Ruby脚本执行此任务。到目前为止,我有以下Ruby脚本:
f_p = "/home/ocean/Documents/testr/"
Dir.glob(f_p + "*").sort.each do |f|
filename = File.basename(f, File.extname(f))
puts filename
end
但它只打印扩展的第一部分,然后我需要以某种方式正确重命名它?在Ruby中
dir_root = "./folder"
Dir.glob( File.join(dir_root, "/**/*") ).sort.each do |file|
if file.match(/\.html\.erb$/)
File.rename(file, file.gsub(/html\.erb/, "haml"))
end
end
不是在Ruby中,而是在Bash中使用rename命令:
rename 's/\.html\.erb$/\.haml/' folder/*/*.html.erb
红宝石色
dir_root = "./folder"
Dir.glob( File.join(dir_root, "/**/*") ).sort.each do |file|
if file.match(/\.html\.erb$/)
File.rename(file, file.gsub(/html\.erb/, "haml"))
end
end
不是在Ruby中,而是在Bash中使用rename命令:
rename 's/\.html\.erb$/\.haml/' folder/*/*.html.erb
toch提供的答案几乎是正确的,但有几个问题:
base_dir = "./views"
Dir.glob( File.join(base_dir, "/**/*") ).sort.each do |file|
File.rename(file, file.gsub(/html\.erb$/, "haml")) if File.basename(file) =~ /html\.erb$/
end
toch提供的答案几乎是正确的,但有几个问题:
base_dir = "./views"
Dir.glob( File.join(base_dir, "/**/*") ).sort.each do |file|
File.rename(file, file.gsub(/html\.erb$/, "haml")) if File.basename(file) =~ /html\.erb$/
end
由于@warantesbr的回答,我已经更正了代码。我在整个文件名中使用了
match
,而不是在basename上进行测试。由于@warantesbr的回答,我更正了我的代码。我对整个文件名使用了match
,而不是对basename进行测试。