grep sin mostrar ruta / archivo: línea

234

¿Cómo grep y solo devuelve la línea correspondiente? es decir, la ruta / nombre de archivo se omite de los resultados.

En este caso, quiero buscar en todos los archivos .bar en el directorio actual, buscando el término FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;
Allan Thomas
fuente

Respuestas:

375

No hay necesidad find. Si solo está buscando un patrón dentro de un directorio específico, esto debería ser suficiente:

grep -hn FOO /your/path/*.bar

¿Dónde -hestá el parámetro para ocultar el nombre del archivo man grep?

-h, --no-filename

Suprima el prefijo de nombres de archivo en la salida. Este es el valor predeterminado cuando solo hay un archivo (o solo entrada estándar) para buscar.

Tenga en cuenta que estaba usando

-H, --with-filename

Imprima el nombre del archivo para cada partido. Este es el valor predeterminado cuando hay más de un archivo para buscar.

fedorqui 'así que deja de dañar'
fuente
¿Se puede omitir el número de línea?
Java
@javadba probablemente estés usando un alias, tipo alias grep. Para omitir el alias, escriba\grep ...
fedorqui 'SO deja de dañar'
1
Sí, estaba usando el alias.
Java
8

Simplemente reemplace -Hcon -h. Consulte man greppara obtener más detalles sobre las opciones

find . -name '*.bar' -exec grep -hn FOO {} \;
jkshah
fuente
6

Desde la página del manual:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
TC1
fuente