*.c
Модель оценивается вашей оболочкой. Это относится к текущему каталогу, так же, как вы используете ls *.c
.
Я думаю, что вместо этого вы хотите найти все файлы, соответствующие *.c
шаблону (рекурсивно), и grep
найти вас в нем. Вот способ сделать это:
find . -name "*.c" -print0 | xargs --null grep -l search-pattern
Используется xargs
для добавления результатов поиска по find
.
В качестве альтернативы используйте -exec
опцию для поиска, например:
find . -name "*.c" -exec grep -l search-pattern "{}" \;
Кроме того, я не уверен, если вы действительно хотите -l
вариант grep
. Это остановится на первом матче:
-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
вариант. В сочетании с рекурсивной опцией это очень мощно и не требуетfind
. Ницца!