我有文件夹>存储* html.erb文件的子文件夹,我需要将其重命名为* .haml Extension。
\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
但它只打印扩展的第一部分,然后我需要以某种方式正确地重命名它?
答案 0 :(得分:2)
在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 's/\.html\.erb$/\.haml/' folder/*/*.html.erb
答案 1 :(得分:2)
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