Usando sed
:
zip_file="$(<<< "${filename}" sed -r 's/^(.*)\..*//')"
-
zip_file="$( [...] )"
: atribui o stdout
de uma subshell invocada à variável zip_file
como uma string
-
<<< "${filename}" [...]
: redireciona o conteúdo da variável ${filename}
para o stdin
do subshell invocado como uma string
-
sed -r 's/^(.*)\.//'
: edita o conteúdo do stdin
do subshell invocado usando expressões regulares estendidas, combinando a cadeia inteira e substituindo-a pela substring correspondente a cada caractere desde o início até o último ponto
Editar : Tendo visto seu comentário para a resposta de heemayl, para substituir com a substring correspondente a todos os caracteres da última barra até o último ponto:
zip_file="$(<<< "${filename}" sed -r 's/^.*\/(.*)\..*//')"