私は最近読んだfindコマンドを使用してテキストとファイルの合計発生回数を見つける方法、ファイル内の「abc」というテキストが表示される回数を見つける方法を尋ねます。そこへの答えは、find . -name "*.txt" | xargs grep -i "abc" | wc -l
数を見つけるためのコマンドを提供します。
more "file_name*" |grep "abc" |wc -l
以前は、特定のファイルに「abc」というテキストが表示される回数を一覧表示するために、同様のアプローチを使用していました。
これを試みたところ、more
コマンドがより速く返されることがわかりましたが、コマンドよりも約30%多くのCPUを使用しているようです(これもモニタリングしましたtop
)find
。
15個のファイルを照会する場合、これら2つのコマンドのうち、どのコマンドがリソースを消費するかについて、より信頼できるデータを持っている人がいるかどうか疑問に思います。 30個以上のファイルはどうですか?
ベストアンサー1
grepする必要があるファイルのリストがある場合は必要ありませんmore
(または)。ファイルを引数として提供するだけです(2番目のツールを介してデータを転送する必要はありません)。cat
grep
grep -i abc *.txt | wc -l
主な違いは、find
現在のディレクトリのファイルを一覧表示するだけでなく(シェル拡張で*.txt
)サブディレクトリにも繰り返されることです。
find . -name "*.txt" | xargs grep -i abc | wc -l
*.txt
2番目の場合、サブディレクトリにいくつかのファイルがある場合、このファイルもコマンドgrep
の引数として提供されます。
ところで、発生回数を計算するオプションがgrep
あります(どちらも必要ありません)-c
wc
grep -c -i abc *txt
また、合計回数ではなく、各ファイルの発生回数のみを提供します。