Ответ 1
Использовать расширение bash
${f%%.*}
Обратите внимание, что вам нужна жадная версия, потому что в имени файла есть несколько точек.
Из руководства bash:
${параметр% слово}
${параметр %% слово}
Слово расширяется для создания шаблона так же, как при расширении имени файла. Если шаблон совпадает с завершающей частью расширенного значения параметра, то результатом расширения является значение параметра с кратким шаблоном соответствия ( "% case" ) или длинным совпадающим шаблоном (случай "%%" ). Если параметр равен "@или", операция удаления шаблона применяется поочередно к каждому позиционному параметру, и расширение является результирующим списком. Если параметр является переменной массива, подстроенной с помощью "@или", операция удаления шаблона применяется поочередно к каждому члену массива, а расширение - это результирующий список.