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.