2012-04-16 11 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

パフォーマンス上の問題が発生する可能性があることに注意してください。この部分が重要な場合は、正規表現と一時配列を含まない他の解決策を検討してください。 – detunized

1

gitのようなシステムに従わないと最初の2文字を抽出してディレクトリを作成し、その中にファイルを配置します。このために非常に多くのディレクトリを作成することは無意味で(パフォーマンスにも影響する可能性があります)、ファイルシステムの非効率性を避けるためにgitなどのシステムで動作する場合は、それもうまくいくはずです。もちろん、このアプローチに従えば、実装もかなりシンプルになります。

directory,filename = filename[0..1],filename[2..-1] 
関連する問題