我在文件夹循环,这样如何通过文件夹循环和重命名文件
Dir.glob('**/*.tif').each do |image_file|
我得到images/SW/SW-9.tif
,我想改变images/SW/SW-9.png
而不是重复,.tif文件应予以删除。
我想重命名所有从文件的.tif到png格式
我在文件夹循环,这样如何通过文件夹循环和重命名文件
Dir.glob('**/*.tif').each do |image_file|
我得到images/SW/SW-9.tif
,我想改变images/SW/SW-9.png
而不是重复,.tif文件应予以删除。
我想重命名所有从文件的.tif到png格式
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
这应做到:
Dir.glob('./**/*.tif').each { |img| File.rename(img, img.gsub(/tif$/, 'png')) unless File.exists?(img.gsub(/tif$/, 'png')) }
值得分成多行,所以发生了什么更清晰。 – tadman
'File.rename(路径,dest_path)',而不是脱壳而出。此外,'gsub(/ \。tif \ Z /,'.png')'不会意外重命名扩展名以外的内容。 –
这应该是'\ z',因为我相信你知道。 –
我试过了。我仍然有重复的.tiff,并且新的png文件的路径在文件夹之外 – suyesh