¿Cómo muestro los nombres de archivo solo después de una búsqueda grep por palabra clave?

15

Actualmente tengo n archivos de datos en un directorio donde cada archivo tiene como máximo 1 línea de datos muy largos. Mi estructura de directorios es

director/
    data1.json
    data2.json
    data3.json

Sé que al menos uno de esos archivos contiene la palabra clave que estoy buscando, pero como la línea de datos es demasiado larga, cubre todo mi terminal. ¿Cómo obtengo el nombre de archivo solo después de realizar una palabra clave grep? El comando grep que estoy usando es:

grep keyword *.json
Thierry Lam
fuente

Respuestas:

30

El argumento -l debe hacer lo que quieras.

   -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)
el otro recibir
fuente
7

Puede usar xargs en combinación con --null con grep o --print0 con ack. Me parece que la velocidad de reconocimiento es más rápida.

grep -lr --null searchterm * | xargs -I {} -0 echo {}

ack -lr --print0 searchterm * | xargs -I {} -0 echo {}

poder interno
fuente