Como altero esse script "Zip multiple files" (mac os) para remover a extensão da saída?

Como altero esse script "Zip multiple files" (mac os) para remover a extensão da saída?

Eu uso esse script para compactar vários arquivos em arquivos zip individuais (por meio de um serviço de automação, então Bash)

for f in "$@"
do
zip -j "$f.zip" "$f"
done

funciona perfeitamente, MAS o arquivo zip tem a extensão no nome:

zipme.jpg sai como zipme.jpg.zip

o resultado que procuro é: zipme.zip

seria ainda melhor se você pudesse deixar a extensão e substituir o ponto final por um sublinhado: zipme_jpg.zip

Muitos dos meus clientes têm problemas com os dois períodos. No momento, eu os removo manualmente depois de fechar o zíper. Alguém pode me dizer como consertar o script?

Responder1

Os JPEGs já estão compactados, não há necessidade de compactá-los novamente com zip. Mas você pode usar a remoção de substring na expansão de parâmetros para remover a extensão.

for f in "$@"
do
zip -j "${f%.*}.zip" "$f"
done

Isso ${f%.*}retira a extensão do nome do arquivo.

informação relacionada