logo hsb.horse
← スニペット一覧に戻る

Snippets

avifencで画像を一括でAVIFに変換する

jpg/jpeg/png を再帰的に走査して avifenc で .avif に変換する Bash スニペット。

公開日: 更新日:

ディレクトリ配下の jpg/jpeg/png をまとめて .avif に変換する最小スクリプト。
空白を含むファイル名に対応するため、find -print0read -d '' を使う。

#!/usr/bin/env bash
set -euo pipefail
while IFS= read -r -d '' file; do
avifenc "$file" -o "${file%.*}.avif" >/dev/null 2>&1
done < <(
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 スニペット。 という目的に対して、前提確認まで全部詰め込む必要はない。呼び出し側へ残す責務と、このスニペットで閉じる責務を分けた方が崩れにくい。