未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

Mailの整理

メールのクライアントはxemacs使いなのでmewなるものを利用している。入社以来6年半ずううっと利用していて、さすがにinboxがぱんぱんになってきた。ディレクトリに必要以上にファイルがあるとのったりのったりするので年ごとにディレクトリをわけることにした。mewは~/Mail/inboxにメールのファイルを置く。ファイル名は数字で1から始まる。毎日数百通ジャンクメールも含めて受け取るので今日現在のファイル名は650000(65万)を越えている。一年10万通のペースと言える。ほとんどその場で消すのだが、それでも日に100通分くらいは削除から逃れられるメールがある。
それをinbox.2000とかinbox.2001とかに振り分けたい。そこで、$ cd ~/Mail/inboxして、

$ time ruby -e '1.upto(10000) {|i| File.rename(i.to_s,
 "/home/hyoshiok/Mail/inbox.2000/"+i.to_s) if File.exist?(i.to_s)}'

real    3m15.381s
user    0m0.638s
sys     3m14.727s

みたいな感じでやったのだが、時間がかかる。ほとんどsysというのがあれである。ファイルシステムext3である。

$ time ruby -e '10001.upto(20000) {|i| File.rename(i.to_s, 
"/home/hyoshiok/Mail/inbox.2000/"+i.to_s) if File.exist?(i.to_s)}'

real    9m5.465s
user    0m0.728s
sys     9m3.552s
$ time ruby -e '20001.upto(30000) {|i| File.rename(i.to_s, 
"/home/hyoshiok/Mail/inbox.2000/"+i.to_s) if File.exist?(i.to_s)}'

real    12m57.798s
user    0m0.566s
sys     12m55.167s

と指数関数的(?)に遅くなる。むむむ。なにか加速する方法はないだろうか?
>教えてRubyの偉い人