4

現在、8Kファイルのディレクトリがあります。来月かそこらで、その数は10万以上に増えるでしょう。特定のパターンに一致するディレクトリ内のファイルをカウントできる必要があります。パターンマッチは膨大な時間を追加します:

[XXXXXX@login-0-0 scripts]$ time ls | grep . -c
8373

real    0m0.115s
user    0m0.109s
sys 0m0.009s
[XXXXXX@login-0-0 scripts]$ time ls *.o* | grep . -c
6262

real    0m1.997s
user    0m0.121s
sys 0m0.270s

ファイルの数が増え続けると、パターンでカウントする時間が長くなりすぎます。これを回避できますか?

ちなみに、ファイルシステムはLustreであり、移植性のないソリューションを扱うことができます。

4

1 に答える 1

6

おそらく、glob が実際には bash によって展開され、パラメータが ls に渡されるため、処理が遅くなっているため、少し余分な作業が必要になります。これは私のために働く:

user@host:~/junk$ time find . | wc -l
188318

real    0m0.202s
user    0m0.076s
sys 0m0.136s

user@host:~/junk$ time find . -name '*.o' | wc -l
374

real    0m0.243s
user    0m0.160s
sys 0m0.080s

速度に大きな違いはありません。これは再帰的ですが、必要ない場合は maxdepth を設定できます。

ゴミを片付ける時が来たのかな…

于 2012-04-20T18:12:47.793 に答える