Ich habe einen Ordner mit vielen Unterordnern voller Bilder. Siehe beispielsweise das angehängte Bild.
Im Grunde möchte ich sie alle durchlaufen und die Bilder verkleinern, sodass keines breiter als 1024 Pixel ist. Es sind alles JPEGs.
Ich kenne die SIPS-Befehle, d. h.
sips -Z 1024 *.png
Das funktioniert allerdings nur, wenn sich alle Bilder im aktuellen Verzeichnis befinden.
Wie richte ich es ein, um alle Unterverzeichnisse zu durchsuchen?
Antwort1
Sie können es mit find ausführen:find images/path -type f -name '*.png' -exec sips -Z 1024 {} \;
„Find“ sucht nach Dateien (-Typ f) mit der Erweiterung PNG (-Name „*.png“) im Verzeichnis „images/path“ und führt den Befehl im Parameter aus, wobei „{}“ durch den Dateinamen ersetzt wird. Sie müssen den Befehl mit „\;“ beenden.
Antwort2
Ich habe es geschafft, ein kleines Bash-Skript zu ändern, das bei mir funktioniert hat
#!/bin/bash
find "foldername" -type f | \
while read file ; do
echo "processing ${file}"
sips -Z 2000 ${file}
done