Использование sed:
zip_file="$(<<< "${filename}" sed -r 's/^(.*)\..*/\1/')"
zip_file="$( [...] )": назначает stdout вызываемой подоболочки переменной zip_file как строку <<< "${filename}" [...]: перенаправляет содержимое переменной ${filename} для вызываемой подсечки stdin в виде строки sed -r 's/^(.*)\./\1/': редактирует содержимое вызываемой подсечки stdin с использованием расширенных регулярных выражений, сопоставляя всю строку и заменяя ее подстрокой, соответствующей каждому символу с самого начала, до тех пор, пока последняя точка Изменить: увидев ваш комментарий к ответу heemayl, замените подстрокой, соответствующей каждому символу от последней косой черты до последней точки:
zip_file="$(<<< "${filename}" sed -r 's/^.*\/(.*)\..*/\1/')"