重命名目录中的所有文件



我的任务:

编写一个程序以使用正则表达式重命名文件。这 程序将采用三个命令行参数:其中的目录 重命名文件,使用与文件匹配的正则表达式 重命名,以及用于替换正则表达式匹配项的字符串。 这 主要用途是更改文件扩展名,但它应该能够 处理替换文件名的任何部分。它应该运行为 遵循:

./fixname.rb dir 'pattern' replacement

我编写的程序是:

puts "Renaming files..."

folder_path = ARGV[0]
reg_exp = ARGV[1].to_regexp
Dir.glob(folder_path + "/*").sort.each do |f|
    filename = File.basename(f, File.extname(f))
  myString = String.new 
  myString = filename 
  filename = myString.gsub(reg_exp, ARGV[2])
  #puts myString
    File.rename(f, folder_path + "/" + filename + File.extname(f))
end
puts "Renaming complete."

当我使用正则表达式时不会发生重命名,否则它正在工作。我得到:

error "`gsub': no implicit conversion of nil into String (TypeError)"

你认为是正则表达式的不是,它是一个包含正则表达式模式的字符串。

您需要将其转换为正则表达式对象。如何做到这一点留给你。

相关内容

  • 没有找到相关文章

最新更新