N番目のファイルが一致した後にgrepを停止する

N番目のファイルが一致した後にgrepを停止する

特定の文字列を検索する必要があるファイルがたくさんあります。grep -rl 'pattern' *パターンを含むファイルを検索するために使用します。しかし、私はファイルの数だけに興味があります。文字列がN個以上のファイルに表示される場合は、N番目の一致に達するとすぐにgrepを停止したいと思います(全体のファイル階層を検索するのは長い作業です)。意味のある終了コードを返したらいいのに、これができない場合は問題なくパイプで接続できますwc

N番目のファイルを一致させた後、grepに他のファイル検索を停止するように指示するにはどうすればよいですか?

ベストアンサー1

grep結果をhead

N番目の一致後に停止するには、次のように出力をバッファリングしないようにする必要がstdbufあります。grep

stdbuf -oL grep -rl 'pattern' * | head -n10

head10行が消費されると消えても、まだパイプに何かを出力するgrepため、終了して受信されます。SIGPIPEhead

これは、ファイル名に改行文字が含まれていないと仮定します。

おすすめ記事