ImageMagick Format Konvertierungen
Umwandlung aller Bilder eines Types aus verschiedenen Unterordnern in ein spezielles Verzeichnis
Wenn du mehrere Unterverzeichnisse hast, über die vertreut Bilddateien liegen, die du platzsparend kleinrechnen und in ein eigenes Verzeichnis abspeichern willst, dann probiere diesen Code aus:
find . -name *.TIF -print0 | \
xargs -n1 -0 -I% sh -c \
'convert -format jpg -quality 80 \
"%" klein/$(basename "%" .TIF).jpg'
# find: Dateien suchen
# Pipe zu xargs
# führt ein Shell Kommando mit convert aus
# schreibt alle Dateien in ein! Unterverzeichnis
Ich hatte viele große TIF Dateien vom Fotografen aus mehreren WeTransfer ZIP Dateien extrahiert, die nun in verschiedenen Ordnern verstreut lagen. Eine Datei wog über 100 MB. Die vielen überflüssigen GB Speicherplatz wollte ich wieder auflösen.
Ein find . -name *.TIF
sucht rekursiv nach allen TIF Dateien.-print0
sorgt dafür dass ein null character als Trennzeichen gesetzt wird, weil sonst Leerzeichen in den Ordnernamen für Falschinterpretationen nach der Pipe entstehen können.
xargs -n1
führt maximal ein Argument im nachfolgenden Befehl aus-0
löst die null character als Trennzeichen auf-I%
ist der Platzhalter für den Pfad/Dateinamen der gefundenen Dateish -c
führt ein Shell Kommando von einem String aus, das in einfachen Anführungszeichen folgt:convert -format jpg -quality 80
stellt die Konvertierung auf JPG und Qualität 80% ein."%"
Damit die Leerzeichen richtig interpretiert werden muss der Platzhalter in Anführungszeichen stehen.$(basename "%" .TIF).jpg
sorgt dafür, dass nur der Dateiname vom Platzhalter verwendet wird und das .TIF ausgelassen wird, so dass ich lediglich die Endung jpg am Ende habe.