$ ctags -x --c-kinds=f filename.c
Это дает только начальную строку каждой функции, но, возможно, этого достаточно.
Если код был написан с использованием довольно распространенных соглашений, функция должна заканчиваться одной строкой, содержащей }
в первом столбце, поэтому довольно просто получить последнюю строку с первым:
awk 'NR > first && /^}$/ { print NR; exit }' first=$FIRST_LINE filename.c