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

使用ruby脚本更改文件扩展名,ruby,bash,shell,Ruby,Bash,Shell,我试图更改通过控制台传递参数的文件的exstension system = "rename" , "'s/\#{ARGV[0]}$/\#{ARGV[1]}'", "*#{ARGV[1]}" 代码是正确的,因为它在控制台上工作,但当我把它放在脚本中时,我遇到了麻烦 s/\# 因为它显示为粉红色,而控制台无法获取它 您不想发送文字单引号,所以请删除它们 您希望删除反斜杠,以便让Ruby对这些表达式求值 你错过了后面的斜线 那个等号在干什么 是否要重命名上一个参数中的ARGV[0],而不是ARGV

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

system = "rename" , "'s/\#{ARGV[0]}$/\#{ARGV[1]}'", "*#{ARGV[1]}"
代码是正确的,因为它在控制台上工作,但当我把它放在脚本中时,我遇到了麻烦

s/\#
因为它显示为粉红色,而控制台无法获取它

  • 您不想发送文字单引号,所以请删除它们
  • 您希望删除反斜杠,以便让Ruby对这些表达式求值
  • 你错过了后面的斜线
  • 那个等号在干什么
  • 是否要重命名上一个参数中的
    ARGV[0]
    ,而不是ARGV[1]
  • 您想使用
    *
    通配符,这需要一个shell来扩展为文件列表,这意味着您不能使用
    系统的列表形式
  • 试一试

    如果要按所需方式重命名,请删除
    -n
    选项


    当然,你不需要为此向壳牌公司求助:

    Dir.glob("*#{ARGV[0]}").each {|fname| 
        newname = fname.sub(/#{ARGV[0]}$/, ARGV[1])
        File.rename(fname, newname)
    }
    
    “因为它是粉红色的”——你是什么意思?
    Dir.glob("*#{ARGV[0]}").each {|fname| 
        newname = fname.sub(/#{ARGV[0]}$/, ARGV[1])
        File.rename(fname, newname)
    }