%2C%20%D1%87%D1%82%D0%BE%D0%B1%D1%8B%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%D0%B7%20%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D1%85%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%3F.png)
Я использую этот скрипт для сжатия нескольких файлов в отдельные 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%.*}
расширение из имени файла.