Wie ändere ich dieses Skript „Mehrere Dateien zippen“ (Mac OS), um die Erweiterung aus der Ausgabe zu entfernen?

Wie ändere ich dieses Skript „Mehrere Dateien zippen“ (Mac OS), um die Erweiterung aus der Ausgabe zu entfernen?

Ich verwende dieses Skript, um mehrere Dateien in einzelne Zip-Dateien zu komprimieren (über einen Automator-Dienst, also Bash).

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

es funktioniert perfekt, ABER die ZIP-Datei hat die Erweiterung im Namen:

zipme.jpg wird als zipme.jpg.zip ausgegeben

das Ergebnis, das ich suche, ist: zipme.zip

noch besser wäre es, wenn du die Erweiterung weglassen und den Punkt durch einen Unterstrich ersetzen könntest: zipme_jpg.zip

Viele meiner Kunden haben Probleme mit den beiden Punkten. Momentan entferne ich sie nach dem Komprimieren manuell. Kann mir jemand sagen, wie ich das Skript reparieren kann?

Antwort1

Jpegs sind bereits komprimiert, es ist nicht nötig, sie erneut mit Zip zu komprimieren. Sie können jedoch die Teilzeichenfolgenentfernung bei der Parametererweiterung verwenden, um die Erweiterung zu entfernen.

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

Dadurch ${f%.*}wird die Erweiterung vom Dateinamen entfernt.

verwandte Informationen