1

phpで作成した検索スクリプト内でこのbashコマンドを実行しています。

find myFolder -type f -exec grep -r KEYWORD {} + 

find myFolder -type f -exec grep -r KEYWORD {} + | wc -l

find myFolder -type f | wc -l

最初の行は、KEYWORDが見つかったファイル名を返します。

2行目はオカレンスの数を示し、3行目はファイルの総数を示しています。

これをよりエレガントかつ高速に行う方法はありますか?

4

1 に答える 1

1

を回避すると、ファイルごとに1-execつ一致するため、効率が向上します。ここではより良い選択です。だから私はこのようなことをします:forkxargs

find myFolder -type f -print0 | xargs -0 grep KEYWORD

find myFolder -type f -print0 | xargs -0 grep KEYWORD | wc -l

少なくともGNUfindを使用すれば、最後のものは問題ないはずです。

-print0とは-0、スペースが含まれるファイル名が正しく処理されることを確認します。

grep -r`は再帰的なgrepを意味しますが、呼び出しごとに1つのファイル名しか指定しないため、冗長であることに注意してください。

于 2012-08-30T15:49:28.280 に答える