Ein minimales Skript zur Massenkonvertierung von jpg/jpeg/png-Dateien unterhalb eines Verzeichnisses in .avif.
Um Dateinamen mit Leerzeichen zu unterstützen, werden find -print0 und read -d '' verwendet.
#!/usr/bin/env bashset -euo pipefail
while IFS= read -r -d '' file; do avifenc "$file" -o "${file%.*}.avif" >/dev/null 2>&1done < <( find . -type f \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' \) -print0)Hinweise
- Wenn eine gleichnamige
.avif-Datei bereits vorhanden ist, wird sie überschrieben - Um Konvertierungsprotokolle zu erhalten,
>/dev/null 2>&1entfernen
Praxishinweis
Dieses Snippet passt gut, wenn dieselbe Operation oder Prüfung im Umfeld von bash, avifenc, image, conversion, cli nicht immer wieder neu geschrieben werden soll. Als kleine Hilfsfunktion bleibt aufrufender Code leichter lesbar.
Wenn jedoch Verzweigungen und Voraussetzungen zunehmen, sollte nicht alles in ein einziges Snippet gepackt werden. Getrennte Schritte und klar abgegrenzte Helfer bleiben auf Dauer wartbarer.
Implementierungsnotiz
Für die Wiederverwendung hilft es, Eingabe, Ausgabe und Nebenwirkungen zuerst festzulegen. Bei Bilder mit avifenc stapelweise in AVIF konvertieren wird aufrufender Code lesbarer, wenn klar ist, was im Kontext bash, avifenc, image, conversion, cli überhaupt verkürzt werden soll.
Nicht jede Vorbedingung muss in dasselbe Snippet wandern. Stabiler bleibt die Lösung, wenn Verantwortung beim Aufrufer und Verantwortung im Snippet sauber getrennt werden.
hsb.horse