2013-11-09 7 views
1

수천 개의 파일을 이렇게 많은 디렉토리에 넣고 싶습니다.루비에서`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

추적 오차를 넣어주세요, 난 당신이'사용할 수 있습니다 새 이름으로 파일이나 폴더 http://www.ruby-doc.org/core-2.0를 이동하기 전에 존재하는 경우 unless' 조건 –

+0

당신은 확인해야합니다 생각합니다. 0/File.html # method-c-exists-3F –

답변

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