ファイルの中身に指定した文字列が含まれているファイル数を取得する

今日もLinux関連でーす!

ファイルの中身に指定した文字列が含まれているファイル数を取得する方法についてご紹介したいと思います。

ファイルの種類は文字列が書かれていれば任意です。(txtファイルだろうと、jsonファイルだろうと何でもOK)

[コマンド書式]

ls 対象ファイル | grep "検索したい文字列" | wc -l

早速昨日紹介したパイプ機能が出ていますね!!

まず、lsで対象ファイルの情報を表示(ここでlsは何もオプションをつけていないので表示されるのは、ファイル名だけ)し、それをgrepコマンドに渡して検索したい文字列を含むファイルとその文字列を含む行を表示します。最後にwcコマンドその結果を渡します。ここでwc -lというオプションをつけることで表示された行数を表示することができます。

結果として、ファイルの中身に指定した文字列が含まれているファイル数を取得するということが実現できます。

例えば、カレントディレクトリにあるファイルのうちErrorという文字列を持つファイルがどれだけあるかを知りたいとします。そうしたい場合上記のコマンド書式に条件を入れるだけ!

以下、例示です。

test1.txt

---------------------

str1

str2

Error

---------------------

test2.txt

---------------------

str1

Error

---------------------

test3.txt

---------------------

str1

---------------------

ls *.txt | grep "Error" | wc -l

 [実行結果]

2

 

上記例の中で、Errorという文字列を持っているのはtest1,test2だけです。

そのため、その行数は2となります。

 

これを使えば、プログラムで実行結果をテキストファイルに出力したときに全部のうちどれだけエラーを含んでいるかを把握することができますよ!!

 

このようなことで困っている人の役にたてるとうれしいです!!