¿Cómo puedo usar grep
para mostrar solo nombres de archivos (sin coincidencias en línea) en Linux?
Normalmente estoy usando algo como:
find . -iname "*php" -exec grep -H myString {} \;
¿Cómo puedo obtener los nombres de archivo (con rutas), pero sin las coincidencias? ¿Tengo que usar xargs
? No vi una manera de hacer esto en mi grep
página de manual.
vim $(grep -rl Something app/)
Respuestas:
La opción estándar
grep -l
(que es una L minúscula) podría hacer esto.Del estándar Unix :
Tampoco es necesario
-H
en este caso.fuente
grep -nrl "some text" .
en la búsqueda de texto en un conjunto de subcarpetas de forma recursivaDesde la
grep(1)
página del manual:fuente
Para una simple búsqueda de archivos, puede usar grep
-l
y-r
opciones:Toda la búsqueda se realiza por grep. Por supuesto, si necesita seleccionar archivos en algún otro parámetro, find es la solución correcta:
La
execdir
opción crea cada comando grep por cada directorio y concatena los nombres de archivo en un solo comando (+
).fuente
Su pregunta ¿Cómo puedo obtener los nombres de archivo (con rutas)
Su sintaxis ejemplo find. -iname "* php" -exec grep -H myString {} \;
Mi sugerencia de comando
El resultado de este comando en mi sistema operativo Linux:
Como necesita el nombre del archivo con la ruta, ¡disfrute!
fuente