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

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

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

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

результат, которого я добиваюсь: zipme.zip

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

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

1 ответ1

3

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .