ディレクトリ配下の jpg/jpeg/png をまとめて .avif に変換する最小スクリプト。
空白を含むファイル名に対応するため、find -print0 と read -d '' を使う。
#!/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)メモ
- 同名の
.avifがある場合は上書きされる - 変換ログが必要なら
>/dev/null 2>&1を外す
実務メモ
このスニペットは、bash、avifenc、image、conversion、cli の周辺で同じ操作や判定を毎回書きたくない時に向く。小さな補助として切り出しておくと、呼び出し側では意図だけを追いやすい。
逆に、分岐や前提条件が増えて責務が膨らむなら、1本のスニペットに詰め込まない方がよい。手順と helper を分けるか、役割ごとに切り出す方が保守しやすい。
実装メモ
使う時は、入力、出力、副作用の3点を先に決めておくと流用しやすい。avifencで画像を一括でAVIFに変換する も bash、avifenc、image、conversion、cli の文脈で何を短くしたいスニペットなのかを先に固定すると、呼び出し側が読みやすくなる。
jpg/jpeg/png を再帰的に走査して avifenc で .avif に変換する Bash スニペット。 という目的に対して、前提確認まで全部詰め込む必要はない。呼び出し側へ残す責務と、このスニペットで閉じる責務を分けた方が崩れにくい。
hsb.horse