Написать скрипт, который работает как grep для группы файлов в заданной
директории и поддиректориях; группа файлов указывается заданной маской.
Маска -- стандартный шаблон имен файлов, она может выглядеть как "*.c",
"image*" и т.д. Скрипт принимает три параметра: первый параметр указывает
строку поиска (рег.выражение), второй указывает маску файлов, а третий --
базовую директорию (обычно Вам потребуютися кавычки "" для большей
части параметров). Третий аргумент не обязательный, если он не задан,
поиск производится в текущей директории.

Вы также можете указать несколько опций перед этими тремя параметрами
(в любом порядке):
  -n ... показать номер строки после имени файла, используя формат
         <file>:<lineno>:<found text>
  -v ... обратить результаты -- выводить только строки, не содержашие
         заданное выражение

Пример: Вывод Вашего скрипта может выглядеть так:
(строка поиска -- 'for', маска -- '*.c*')

src/test.cc:for (int i=0; i<count; i++) {
src/common/functions.c:process_data(--number_of_samples); //
decrease number before calling
