このように、何千ものファイルを多くのディレクトリにシャッフルしたいと考えています。
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
。ソースとターゲットが同じ場合、何もしないより良い方法はありますか?