grepを使用してパターンを含むファイル名のみを出力します(ライン出力なし)。

grepを使用してパターンを含むファイル名のみを出力します(ライン出力なし)。

パターンを含む行を出力せずにパターンを含むファイルを一覧表示したいと思います。私はこれがこれを行うために使用できると思いますgrepgrepそういう意味ではどう使うべきでしょうか?たとえば、次のコマンドは、すべてのファイルに「stringpattern」(大文字と小文字の区別)を含むすべての行を提供します.txt。ファイル名(±行番号)だけ知りたいです。

grep -ni stringpattern *.txt

理想的には、文字列/パターンがファイル内で複数回発生する場合は、ファイルに複数行の出力があることを願っています。

ベストアンサー1

一致するファイルのみが必要な場合:

grep -lie pattern -- *.txt

grepを使用してファイルと行番号だけを印刷することはできないと思います。なぜなら、 option を使うと-nすべての行に「file:line:match」が印刷されるからです。ファイル名に:改行文字が含まれていないか含まれていない場合は、パイプを介して必要なものだけをcut取得できます。

grep -nie pattern -- /dev/null *.txt | cut -d: -f 1,2

/dev/null*.txtこのオプションは、ファイル名にのみ拡張する場合は必須です。grepそれ以外の場合、ファイル名は印刷されません。 GNU実装を使用するか、互換性のあるGNU実装を使用すると、代わりに/を使用してファイル名を常に印刷することgrepができます。-H--with-filename

おすすめ記事