grep para el contenido del archivo pero devuelve el nombre del archivo

grep para el contenido del archivo pero devuelve el nombre del archivo

Necesito la sintaxis GREP para la siguiente tarea (estoy en un sistema operativo LINUX):

consultando TODOS los archivos en el directorio ACTUAL que contienen CADENAS pero solo enumerando los NOMBRES DE ARCHIVO que contienen una coincidencia.

¡Gracias!

Respuesta1

Puedes usar

grep -rl stringToSearch .

o

 find . -type f -exec grep -l stringToSearch {} \;

Para obtener más información sobre grepotros comandos de Unix, consulte el manual ( man)

En ese caso man grepdice que

-l, --files-with-matches Suprime la salida normal; en su lugar, imprima el nombre de cada archivo de entrada desde el cual normalmente se habría impreso la salida.
El escaneo se detendrá en el primer partido.

Obviamente, como comando bash, si su cadena contiene caracteres o espacios especiales, debe (en orden) escapar de ellos y/o rodear su cadena con cuotas.

Respuesta2

"Grep -l" le dará la lista de nombres de archivos.

> echo "hello" > test_file1.list
> echo "hello2.." > test_file2.list
> echo "xyz" > test_file3.list


> grep "hello" test_file*list

test_file1.list:hello
test_file2.list:hello2..


> grep -l "hello" test_file*list
test_file1.list
test_file2.list

información relacionada