我有这个代码在当前目录中重命名图像:
puts Dir["**/*"].length
folder_path = Dir.pwd
filenames = Dir.glob("*.png")
filenames.each_with_index do |filename, index|
File.rename(filename, folder_path + "/#{index}" + File.extname(filename))
end
我的控制台:
98
$ ruby rename.rb
90
$ ruby rename.rb
90
$ ruby rename.rb
90
$ ruby rename.rb
82
$ ruby rename.rb
82
$ ruby rename.rb
74
$ ruby rename.rb
74
$ ruby rename.rb
66
似乎第3次运行代码时,某些图像会在进度中被删除。
答案 0 :(得分:1)
脚本擦除文件的唯一方法是删除具有相同名称的现有文件...您可以检查文件是否已经存在:
puts Dir["**/*"].length
folder_path = Dir.pwd
filenames = Dir.glob("*.png")
filenames.each_with_index do |filename, index|
new_name= folder_path + "/#{index}" + File.extname(filename)
raise "#{new_name} already exists" if File.exists?(new_name)
File.rename(filename, new_name)
end
答案 1 :(得分:0)
如果要重命名文件,即使名称文件存在,您也可以这样做:
folder_path = Dir.pwd
filenames = Dir.glob('*.png')
filenames.each_with_index do |filename, index|
new_name = folder_path + "/#{index}" + File.extname(filename)
unless File.exists?(new_name)
File.rename(filename, new_name)
else
index += 1
new_name = folder_path + "/#{index}" + File.extname(filename)
File.rename(filename, new_name)
end
end