我正在尝试更改通过控制台传递参数的文件的exstension
system = "rename" , "'s/\#{ARGV[0]}$/\#{ARGV[1]}'", "*#{ARGV[1]}"
代码是正确的,因为它可以在控制台上运行但是当我把它放在脚本中时我遇到了麻烦
s/\#
因为它显示为粉红色而控制台无法获取它。
答案 0 :(得分:0)
ARGV[0]
重命名,而不是ARGV [1]吗?*
通配符,这需要将shell扩展为文件列表,这意味着您无法使用system
的列表形式尝试
system "/usr/bin/rename -n 's/#{ARGV[0]}$/#{ARGV[1]}/' *#{ARGV[0]}"
如果您要按照自己的方式重命名,请移除-n
选项。
当然,你不需要为此调用shell:
Dir.glob("*#{ARGV[0]}").each {|fname|
newname = fname.sub(/#{ARGV[0]}$/, ARGV[1])
File.rename(fname, newname)
}