ack foo *
行のリストを返します:
bar.txt
28: this is foo stuff
dump.txt
12: results of foo
gobs.txt
1137: more lines with foo
と
ack -c -l
戻り値
3
私の質問は、どうすれば両方を表示できますか?最初の例のように行のリストと、2番目の例のように一致した行の数を数えたいのですが。
使用できます
ack -hc
(-h
の省略形--no-filename
)合計数を取得します。
ackのドキュメント/マニュアルページによると:
-c、-count
通常の出力を抑制します。代わりに、入力ファイルごとに一致する行の数を出力します。が有効な場合
-l
、行が一致する各ファイルの行数のみが表示されます。がない-l
と、一部の行数がゼロになる場合があります。
-h
(--no-filename
)と組み合わせると、ack
合計カウントが1つだけ出力されます。
これが私のために働いたものです(@Jordanの答えを拡張して)-
ack 'pattern' && ack -hc 'pattern'
または、より良い(IMO):
ack 'pattern'; ack -hc 'pattern'
私が理解している限り、を使用する&&
と、2番目のコマンドは最初のコマンドが実行に戻ることに依存します。代わりに使用;
すると、関係なく、両方が次々に実行されます。;
この場合、より適切だと思います。
ack
1つのコマンドで必要なものの両方を出力する方法はありません。必要なものを取得する最も簡単な方法は、両方のコマンドを。と一緒にチェーンすることです&&
。