使用ruby脚本更改文件扩展名

时间:2018-04-26 16:04:05

标签: ruby bash shell

我正在尝试更改通过控制台传递参数的文件的exstension

system = "rename" , "'s/\#{ARGV[0]}$/\#{ARGV[1]}'", "*#{ARGV[1]}"

代码是正确的,因为它可以在控制台上运行但是当我把它放在脚本中时我遇到了麻烦

s/\#

因为它显示为粉红色而控制台无法获取它。

1 个答案:

答案 0 :(得分:0)

  1. 您不想发送文字单引号,因此请将其删除。
  2. 您想要删除反斜杠,以便让Ruby评估这些表达式。
  3. 你错过了斜线。
  4. 这是什么等号?
  5. 你想在最后一个参数中ARGV[0]重命名,而不是ARGV [1]吗?
  6. 您想要使用*通配符,这需要将shell扩展为文件列表,这意味着您无法使用system的列表形式
  7. 尝试

    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)
    }