特定の文字列を検索する必要があるファイルがたくさんあります。grep -rl 'pattern' *
パターンを含むファイルを検索するために使用します。しかし、私はファイルの数だけに興味があります。文字列がN個以上のファイルに表示される場合は、N番目の一致に達するとすぐにgrepを停止したいと思います(全体のファイル階層を検索するのは長い作業です)。意味のある終了コードを返したらいいのに、これができない場合は問題なくパイプで接続できますwc
。
N番目のファイルを一致させた後、grepに他のファイル検索を停止するように指示するにはどうすればよいですか?
ベストアンサー1
grep
結果をhead
。
N番目の一致後に停止するには、次のように出力をバッファリングしないようにする必要がstdbuf
あります。grep
stdbuf -oL grep -rl 'pattern' * | head -n10
head
10行が消費されると消えても、まだパイプに何かを出力するgrep
ため、終了して受信されます。SIGPIPE
head
これは、ファイル名に改行文字が含まれていないと仮定します。