我在这样的文件夹中循环
Dir.glob('**/*.tif').each do |image_file|
我得images/SW/SW-9.tif
,我想更改为images/SW/SW-9.png
而不重复,应删除.tif文件。
我想将所有文件从.tif重命名为.png
答案 0 :(得分:0)
Dir.glob
返回完整路径。
第1步:gsub .tif
到.png
第2步:检查新名称是否重复
第3步:使用mv
Dir.glob('./**/*.tif').each do |path|
dest_path = path.gsub(".tif", ".png")
unless File.exists?(dest_path)
`mv "#{path}" "#{dest_path}"`
end
end
根据评论建议进行编辑
Dir.glob('./**/*.tif').each do |path|
dest_path = path.gsub(/\.tif\z/, '.png')
unless File.exists?(dest_path)
File.rename(path, dest_path)
end
end
答案 1 :(得分:0)
这应该这样做:
Dir.glob('./**/*.tif').each { |img| File.rename(img, img.gsub(/tif$/, 'png')) unless File.exists?(img.gsub(/tif$/, 'png')) }