4

たくさんのフォルダとサブフォルダがあり、それらのサブフォルダにたくさんのファイルがあるディレクトリツリーがあります。これらの各ファイルの「Hello」という単語の数を取得し、結果を「File」「a」の「Hello」をn回、「File」「b」の「Hello」を「m回」などとして表示する必要があります。 。Linuxでスクリプトを作成して、これらの各ファイルでhelloという単語の単語数を取得するにはどうすればよいですか。ネットを閲覧した後、「wc」といくつかのgrepの組み合わせを試しましたが、すべてのフォルダー内のすべてのファイルからの合計数がわかりました。

ありがとう

4

2 に答える 2

2

次のようなものを試してください。

find . -type f | xargs -n1 grep "Hello" -c

に追加-type fするとfind、ディレクトリではなくファイルのみが返されるようになります。に追加-n1するxargsと、によって返されるすべてのファイルfindが独自の呼び出しをgrep取得するようになり、ファイルごとのカウントを取得できるようになります。すべての一致ではなく、一致の数-cを返す引数。grep

上記の式は、「Hello」を含む行の数をカウントします。Helloを含む行の数だけでなく、Helloの総数が必要な場合は、より高度な処理を行う必要があります。grepのオプションを使用して-o、行の一致するセクションを出力し、それをと組み合わせてwc -l、合計発生数を取得できます。

于 2012-10-28T20:08:07.660 に答える
0

grep構文の使用は次のとおりです。

grep -Rc "Hello" your_dir/

ack私はまた、次の優れた代替品としてお勧めしgrepます:

ack -lc "Hello" your_dir/
于 2012-10-28T20:11:38.877 に答える