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 に答える