GNU/Linux >> Linux の 問題 >  >> Linux

Grep一致しないファイルの表示を抑制する方法は?

grepを使用して特定の単語を含むファイルを検索しようとしています 。ディレクトリには多くのファイルがあります(> 500)

実行するコマンド

$ grep 'delete' *

出力

validate_data_stage1:0
validate_data_stage2:0
validate_data_stage3:0
validate_data_stage4:0
validate_data_stage5:0
validate_input_stage1:0
validate_input_stage2:0
validate_input_stage3:0
validate_input_stage4:0
.... and hundred of such lines

これらは、指定された一致を含まないファイルです。それらの行がstdoutに表示されないようにしたい。 -qを知っています 切り替えますが、それでは完全な出力が抑制されます。これは望ましくありません。

どうすればいいですか?

承認された回答:

これがgrep-cによって示される動作です 。

おそらく、名前が-で始まるファイルがあります。 cが含まれています 文字であり、 POSIXLY_CORRECTを設定せずにGNUGrepを使用している 環境変数。

使用:

grep -- delete *

以上:

grep delete ./*

- そのファイル名がオプションと見なされないように、オプションの終わりをマークします(POSIX grepを使用すると、オプション以外の delete以降はオプションと見なされません。 引数はオプションの終わりを示します)が、-というファイルの問題には対処しません。 。 grep delete ./* より堅牢ですが、余分な ./を出力するという欠点があります 一致するファイルの場合(ただし、改行文字を含むファイル名を識別するのに役立つため、ボーナスと見なされる場合があります)。


Linux
  1. ファイルに構文の強調表示を表示する方法は?

  2. ファイル内の複数行パターンを検索するにはどうすればよいですか?

  3. 連続ストリームを「grep」する方法は?

  1. パターンの後にコンテンツをgrepする方法は?

  2. grep でバイナリ ファイルの一致結果を抑制する方法

  3. 実行中のプロセスPythonのリストを表示するには?

  1. Linux で削除されたファイルを復元するには?

  2. bash スクリプトで unicode を grep する方法

  3. Linuxでテキストファイルから特定の行を表示するには?