El *.c
patrón es evaluado por su shell. Se aplica al directorio actual, tal como lo usaría ls *.c
.
Creo que lo que quieres es encontrar todos los archivos que coincidan con el *.c
patrón (recursivamente) y grep
buscarte en él. Aquí hay una manera de hacer eso:
find . -name "*.c" -print0 | xargs --null grep -l search-pattern
Se utiliza xargs
para agregar los resultados de búsqueda por find
.
Alternativamente, use la -exec
opción para buscar, por ejemplo:
find . -name "*.c" -exec grep -l search-pattern "{}" \;
Además, no estoy seguro de si realmente quieres la -l
opción grep
. Se detendrá en el primer partido:
-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.)
--include=GLOB
opción. En combinación con la opción recursiva, esto es muy poderoso y no requierefind
. ¡Agradable!