I'm attempting to find the number of matches for a given string across a large project. Currently, to do this with ag
I am using the following command:
$ echo 0$(ag -c searchterm | sed -e "s/^.*:/+/") | bc
which is obviously a bit lengthy and not very intuitive. Is there any better way to get the total number of matches in a directory from ag
? I've dug through the documentation and couldn't find anything helpful there.
Edit: Thanks to a recent commit to ag
, the filenames can be stripped with ag
instead of sed
, so this also works:
$ echo `ag test -c --nofilename | sed "s/$/+/"`0 | bc
Note: I realize I could do this with ack -hcl searchterm
(Well, almost. In my specific case I'd need an --ignore-dir building
in there as well), but as this is already a large project (and will be growing considerably), the speed boost offered by ag
makes it preferable (ack
takes about 3 seconds for my searches vs ag
's nearly instantaneous result), so I would like to stick with it.
I use ag itself to match the stats. E.g.:
>$ ag --stats --java -c 'searchstring' | ag '.*matches'
>$ 22 matches
>$ 6 files contained matches
Filter with lookahead to print just the number of matches:
>$ ag --stats --java -c 'searchstring' | ag -o '^[0-9]+(?=\smatches)'
>$ 22
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With