在目录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
答案 0 :(得分:1)
您可以使用Dir.glob获取目录中文件路径的列表:
-
然后使用String#sub和FileUtils.mv或File.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