*.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. Приємно!