
Quando executo meu comando grep:
grep -rc 'PATTERN' .
ele imprime o número de linhas em que o padrão ocorre, mas fica assim:
./hotel_232424.dat:234
e assim por diante...
Como eu removeria a ./hotel_232424.dat:
peça e apenas imprimiria o número?
Responder1
Com a implementação GNU do grep
, você tem a opção -h
/ --no-filename
para isso.
$ grep -rc PATTERN .
./b:1
./a:0
./1/2/c:2
$ grep -rhc PATTERN .
1
0
2
O equivalente portátil/padrão seria:
$ find . -type f -exec grep -c PATTERN {} \;
0
2
1
mas significaria executar uma grep
invocação por arquivo.
Se, em vez disso, você quiser o número total de ocorrências (1+2 = 3 aqui), poderá fazer (portavelmente):
$ find . -type f -exec cat {} + | grep -c PATTERN
3
(observe que se alguns dos arquivos tiverem dados após a última linha (ou seja, arquivos que não sejam de texto), isso poderá atrapalhar o resultado)
Ou, com um grep
suporte -r
como o seu:
$ grep -r PATTERN . | wc -l
3