如果在ruby中使用`FileUtils.mv`时源和目标相同,如何忽略错误

时间:2013-11-09 11:19:50

标签: ruby fileutils

我想将数千个文件混合到许多目录中。

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是不好的方法。 当源和目标相同时,有没有更好的方法什么都不做?

1 个答案:

答案 0 :(得分:1)

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