1

我想将数千个文件洗牌到这样的许多目录中。

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

4

1 回答 1

1
orig, dest = files[j+i*100], "%03d" % i
FileUtils.mv(orig, dest) unless File.basename(orig) == dest
于 2013-11-09T11:49:06.770 回答