C_FILES=$(find . -iname '*.c' | wc -l)
O_FILES=$(find . -iname '*.o' | wc -l)
далее - на Ваше усмотрение. Можно связать это с уже прошедшим временем сборки и попытаться вычислить оставшееся
Но! с файлы (и не только с, а еще и срр, etc) разные бывают... Так что оценка поверхностная