Если вы хотите найти шаблон в первых десяти строках нескольких файлов, вы можете:
for file in *; do
head -n 10 "$file" | grep -F 'main()'
done
Это напечатает совпадающие строки. Чтобы напечатать совпадающую строку и имя файла, используйте:
for file in *; do
q=$(head -n 10 "$file" | grep -F 'main()')
[ -z "$q" ] || printf '%s : %s\n' "$file" "$q"
done
И печатать только имена файлов, а не соответствующую строку:
for file in *; do
head -n 10 "$file" | grep -qF 'main()' && printf '%s\n' "$file"
done