Как изменить этот скрипт «Zip multiple files» (mac os), чтобы удалить расширение из выходных данных?

Как изменить этот скрипт «Zip multiple files» (mac os), чтобы удалить расширение из выходных данных?

Я использую этот скрипт для сжатия нескольких файлов в отдельные zip-файлы (хотя это служба-автоматизатор, поэтому Bash)

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

работает отлично, НО в названии zip-файла есть расширение:

zipme.jpg выводится как zipme.jpg.zip

результат, который мне нужен: zipme.zip

было бы еще лучше, если бы вы могли оставить расширение и заменить точку на подчеркивание: zipme_jpg.zip

У многих моих клиентов проблемы с двумя точками. Сейчас я их вручную удаляю после архивации. Может кто-нибудь подскажет, как исправить скрипт?

решение1

Jpeg уже сжаты, нет необходимости сжимать их снова с помощью zip. Но вы можете использовать удаление подстроки в расширении параметра, чтобы удалить расширение.

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

Удаляет ${f%.*}расширение из имени файла.

Связанный контент