我如何改变这个“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%.*}从文件名中删除扩展名。

相关内容