在文件名中的某个关键字后面附加文本

时间:2019-01-28 18:07:12

标签: ruby

在目录C:\Users\Scripts中,我有以下文件:

2A_Apple_VC_20180101.txt
2A_Apple_VC_20180201.txt
2A_Apple_VC_20180301.txt
etc.

如何为Vendor开头的目录中的所有文件名在2A_后面插入短语2A_,将文件名永久更改为:

2A_Vendor_Apple_VC_20180101.txt
2A_Vendor_Apple_VC_20180201.txt
2A_Vendor_Apple_VC_20180301.txt

3 个答案:

答案 0 :(得分:1)

您可以使用Dir.glob获取目录中文件路径的列表:

-

然后使用String#subFileUtils.mvFile.rename重命名:

paths = Dir.glob("C:\Users\Scripts/*.txt")

答案 1 :(得分:1)

您可以尝试File#rename

Dir["2A_*.txt"].each do |f|
  File.rename(f, f.sub('2A_', '2A_Vendor_'))
end

或带有路径

path = 'your_path_here'
Dir.glob("#{path}/2A_*.txt").each do |f|
  File.rename(f, f.sub('2A_', '2A_Vendor_'))
end

对于Windows,您可能需要对此反斜杠this

答案 2 :(得分:1)

使用Max的回复重新制作的版本:

#!/usr/bin/env ruby

require 'rubygems'

paths = Dir.glob("C:\Users\Scripts/*.txt")
paths.each do |path|
  puts "File #{path}"
  if path =~ /2A_/
    puts "Find 2A"
    new_path = path.sub(/2A_/, "2A_Vendor_")
    puts "New file: #{new_path}"
    File.rename path, new_path
  end
end