Bilder konvertieren z.B. pnm nach png
Schlüsselwörter : Shell, Bash Parametererweiterungen
Befehl
In der Kommandozeile das gewünschte Verzeichnis aufrufen und folgendes eingeben
Hier am Beispiel von pnm Bildern die in png umgewandelt werden sollen.
for i in *.pnm; do convert ${i} ${i%.*}.png; done
Beschreibung
Sie wollen alle Bilder vom pnm Format ins png Format umwandeln.
Teil 1:for i in *.pnm; do
Hier werden alle Bilder im aktuellen Verzeichnis einzeln abgearbeitet und in die Variable i gepackt um im "do" Teil weiterverarbeitet zu werden.
Teil 2:convert ${i} ${i%.*}.png; done
Hier wird jedes einzelne Bild welches im aktuellen Verzeichnis gefunden wurde ins png format konvertiert.
convert <Quelle> <Ziel> z.B. convert katze001.pnm katze001.png
Beschreibung des Quell Parameter ${i}
${i} beinhaltet den aktuellen Dateinamen den sich die for Schleife aus dem Dateienstapel genommen hat.
Beschreibung des Ziel Parameter ${i%.*}.png
Um hinterher saubere Dateinamen zu bekommen, ist es nötig den Dateinamen so zu ändern, dass die alte Dateiendung
aus dem Zieldateinamen verschwindet.
Wenn Sie folgende Parameter
${i} ${i}.png
verwendet würden, sähe der neue Dateiname wie folgt aus.
Dateiname.pnm.png
Jeder Dateiname wäre um die Zeichenfolge .png erweitert worden.
Das ist unerwünscht.
Um den Teil .pnm aus dem Dateinamen herauszubekommen, gibt es die Parametererweiterungen.
In diesem Fall wird aus dem Dateinamen der originale Dateityp herausgeschnitten.
${i%.*}
Aus "Katze0001.pnm" wird "Katze0001"
nun muss noch der neue Dateityp (Hier png) angefügt werden
${i%.*}.png
Hierzu schreibt man hinter den Parameter den Dateityp den das Bild haben soll (hier .png).
Liste und Ausgabe: Katze001.jpg umwandeln in Katze.png
${i} = Katze0001.pnm
${i%.*} = Katze0001
${i%.*}.png = Katze0001.png
Beschreibung von i%.*
i=Dateiname der Originaldatei
%.*= kürze den letzten Teil der mit dem Zeichen . anfängt sowie alle folgenden Zeichen (*)
Hä? Beispiel bitte!
Beispiel 1:
Sie haben deine Datei mit dem Namen
Rechnung.wichtig.png
In dieser Datei kommt zwei mal der Punkt (.) vor.
Sie wollen die png Datei in eine pdf Datei umwandeln den Rest aber beibehalten.
Wenn Sie jetzt das obere Beispiel anwenden {i%.*} wird nun der Teil beginnend mit dem letzten Punkt entfernt.
Sie erhalten also => Rechnung.wichtig
Beispiel 2:
Die Datei hat den Namen Katze.klein.schlafend.png
Diese Datei ist durch drei Punkte getrennt.
Sie wollen die Datei in eine PDF Datei umwandeln.
Nach Anwendung der oberen Parametererweiterung {i%.*}
Katze.klein.schlafend.pdf
Weitere Beispiele:
a.txt -> %.* -> a
a.b.txt -> %.* -> a.b
a.b.c.d.pdf -> %.* -> a.b.c.d
Fazit
Die Parametererweiterung %.* schneidet den letzten Punkt und alles was darauf folgt aus dem Dateinamen raus.