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

3

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

consulta TODOS los archivos en el directorio ACTUAL que contienen STRING pero solo enumera los FILENAMES que contienen una coincidencia.

¡Gracias!

Allan Bowe
fuente
Creo que esto cruza la línea y no es una pregunta de programación. Votación para pasar a Superusuario.
Descansa el
No estoy de acuerdo: para mí es común incrustar comandos del sistema operativo en otros idiomas.
Allan Bowe

Respuestas:

9

Puedes usar

grep -rl stringToSearch .

o

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

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

En ese caso man grepdice que

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

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

Don Calisto
fuente
1

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

> 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
Rajesh Chamarthi
fuente