エントリがファイルにリストされている回数を見つけるとき、moreまたはfind moreに多くのリソースが必要ですか?

エントリがファイルにリストされている回数を見つけるとき、moreまたはfind moreに多くのリソースが必要ですか?

私は最近読んだfindコマンドを使用してテキストとファイルの合計発生回数を見つける方法、ファイル内の「abc」というテキストが表示される回数を見つける方法を尋ねます。そこへの答えは、find . -name "*.txt" | xargs grep -i "abc" | wc -l数を見つけるためのコマンドを提供します。

more "file_name*" |grep "abc" |wc -l以前は、特定のファイルに「abc」というテキストが表示される回数を一覧表示するために、同様のアプローチを使用していました。

これを試みたところ、moreコマンドがより速く返されることがわかりましたが、コマンドよりも約30%多くのCPUを使用しているようです(これもモニタリングしましたtopfind

15個のファイルを照会する場合、これら2つのコマンドのうち、どのコマンドがリソースを消費するかについて、より信頼できるデータを持っている人がいるかどうか疑問に思います。 30個以上のファイルはどうですか?

ベストアンサー1

grepする必要があるファイルのリストがある場合は必要ありませんmore(または)。ファイルを引数として提供するだけです(2番目のツールを介してデータを転送する必要はありません)。catgrep

grep -i abc *.txt | wc -l

主な違いは、find現在のディレクトリのファイルを一覧表示するだけでなく(シェル拡張で*.txt)サブディレクトリにも繰り返されることです。

find . -name "*.txt" | xargs grep -i abc | wc -l

*.txt2番目の場合、サブディレクトリにいくつかのファイルがある場合、このファイルもコマンドgrepの引数として提供されます。

ところで、発生回数を計算するオプションがgrepあります(どちらも必要ありません)-cwc

grep -c -i abc *txt

また、合計回数ではなく、各ファイルの発生回数のみを提供します。

おすすめ記事