2013-11-09 33 views
1

我想將數以千計的文件轉換成像這樣的許多目錄。如何在ruby中使用`FileUtils.mv`時源和目標相同時忽略錯誤

require 'fileutils' 
files = Dir.glob("**/*.jpg") 
files.shuffle! 
((files.size/100)+1).times do |i| 
    FileUtils.mkdir_p("%03d" % i) 
    100.times{|j| 
    begin 
     FileUtils.mv(files[j+i*100],"%03d" % i) 
    rescue ArgumentError 
    end 
    } 
end 

有時源和目標是相同的文件。 要忽略我正在使用的錯誤rescue ArgumentError

但我認爲這是使用Exception這樣的壞方法。 當源和目標相同時,有什麼更好的辦法什麼也不做?

+0

請把跟蹤誤差,我想你可以使用'unless'條件 –

+0

如果文件或文件夾與新名稱移動http://www.ruby-doc.org/core-2.0之前就存在你應該檢查。 0/File.html#方法-C-存在-3F –

回答

1
orig, dest = files[j+i*100], "%03d" % i 
FileUtils.mv(orig, dest) unless File.basename(orig) == dest 
相關問題