3

サプライヤーからのデータを保存するマスファイラーデバイスをインストールしました。彼らは毎日 FTP ファイルを送信しており、現在、約 60,000 以上のファイルがあります。

find . -name '*TXT' -exec ls '{}' \; | wc -l非常にゆっくりではありますが、実行するとうまくいきます。

ファイルをカウントするより速い方法はありますか?

4

4 に答える 4

8

なぜだけではないのですか

find . -name '*TXT' | wc -l

? 現在のコマンドはlsファイルに対して不必要に生成されており、そのプロセスの生成自体は非常に遅くなります。私のシステムでの簡単なテストでは、40 倍のスピードアップが示唆されました。

于 2012-08-21T16:21:01.400 に答える
2

GNU find を使用すると、これはわずかに高速になる可能性があります。

find . -name '*.TXT' -printf x | wc -c

またはPOSIXで

find . -name '*.TXT' -exec printf x%.s {} + | wc -c
于 2012-08-21T16:45:13.930 に答える
2

バッシュで:

shopt -s globstar nullglob

そして、どちらか

files=(**/*.TXT)
nfiles=${#files[@]}

また

nfiles=$( printf "%s\n" **/*.TXT | wc -l )
于 2012-08-21T19:54:46.883 に答える
2

どうですか

find . -name '*TXT' | wc -l
于 2012-08-21T16:20:34.200 に答える