私はgrepを使ってWebサーバー上のいくつかのファイルから特定のテキスト部分を見つけようとしています。問題ありません。私が望むよりもはるかに多くの情報を返します。理想的にはファイルのリストのみを返します。テキストがファイルの複数の場所にある場合、ファイル名は一度だけリストされます。
現在私は次のようなものを使用しています:
grep -ir essay_ "mysite"
私のサイトのすべてのディレクトリで、Essay_という単語に対して大文字と小文字を区別しない再帰検索を実行します。返される内容は次のとおりです。
mysite/dot/contest_declaration.php:$questions = $db->get_results("SELECT * FROM dot_essay WHERE active = 1 order by display_order asc");
mysite/dot/contest_declaration.php: $db->query("DELETE FROM dot_essay_xref WHERE entry_id = $svar_entry_id");
mysite/dot/contest_declaration.php: $id = $question->essay_id;
mysite/dot/contest_declaration.php: $answer = ${"essay_$id"};
shoppermarketexpo/dot/print_declaration.php: $questions = $db->get_results("SELECT * FROM dot_essay WHERE active = 1");
私が返したいのは次のとおりです。
mysite/dot/contest_declaration.php
mysite/dot/print_declaration.php
答え1
-l
、--files-with-matches
通常の出力を抑制し、代わりに印刷は通常、各入力ファイルの名前を印刷します。検索は最初の一致で停止します。 (-l
POSIXで指定)
~からGNU実装マニュアルgrep
。上記のように-l
(l
リスト) は標準的で移植可能で--files-with-matches
(通常は長いオプション)、GNU拡張です.
答え2
-l
(el)または--files-with-matches
コマンドラインスイッチが必要です。
通常の出力を抑制します。代わりに、印刷は通常、各入力ファイルの名前を印刷します。検索は最初の一致で停止します。 (-l は POSIX で指定されます.)