2012-04-16 4 views
-2

파일 시스템 과부하를 탈출루비 : 폴더 이름에 분할 해시

f6f6c3408e67bf6473d65de172f0e5da.jpg 

파일 이름

에서 폴더 f6/f6/c3/40/8e/67/bf/64/73/d6/5d/e1/72/f0/e5/da.jpg의 구조를 만드는 방법

+0

이러한 패턴을 사용하면 더 많은 파일/시스템 과부하를 만들 수 있습니다. :) – yazu

+0

왜? 논쟁? –

답변

1

이 그것을 수행해야합니다

'f6f6c3408e67bf6473d65de172f0e5da.jpg'.sub /(.*)(\..*)/ do 
    filename, extension = $1, $2 
    filename.scan(/../).join('/') + extension 
end 
+0

잠재적 인 성능 문제를 염두에 두십시오. 이 부분이 중요하다면 regexps와 임시 배열을 포함하지 않는 다른 솔루션을 고려하십시오. – detunized

1

git과 같은 시스템을 따르지 않는 이유는 무엇입니까? d는 처음 두 문자를 추출하여 디렉토리를 만들고 그 안에 파일을 넣습니다. 이렇게 많은 디렉토리를 만드는 것은 무의미한 것으로 보이고 성능에 영향을 미칠 수 있습니다. 파일 시스템의 비효율을 피하기 위해 git과 같은 시스템에서 작동하는 경우에도 작동합니다. 물론 이러한 접근 방식을 따르는 경우에도 구현이 매우 간단해질 것입니다.

directory,filename = filename[0..1],filename[2..-1]