
Cuando ejecuto mi comando grep:
grep -rc 'PATTERN' .
imprime el número de líneas que aparece el patrón, pero se ve así:
./hotel_232424.dat:234
etcétera...
¿Cómo quitaría la ./hotel_232424.dat:
pieza e simplemente imprimiría el número?
Respuesta1
Con la implementación GNU de grep
, tienes la opción -h
/ --no-filename
para eso.
$ grep -rc PATTERN .
./b:1
./a:0
./1/2/c:2
$ grep -rhc PATTERN .
1
0
2
El equivalente portátil/estándar sería:
$ find . -type f -exec grep -c PATTERN {} \;
0
2
1
pero significaría ejecutar una grep
invocación por archivo.
Si, en cambio, desea el número total de ocurrencias (1+2 = 3 aquí), puede hacer (de forma portátil):
$ find . -type f -exec cat {} + | grep -c PATTERN
3
(tenga en cuenta que si algunos de los archivos tienen datos después de su última línea (es decir, archivos que no son de texto), eso podría estropear el resultado)
O con un grep
soporte -r
como el tuyo:
$ grep -r PATTERN . | wc -l
3