我在文件夾循環,這樣如何通過文件夾循環和重命名文件
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