디렉터리 하위의 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 주변에서 같은 조작이나 판정을 매번 다시 쓰고 싶지 않을 때 잘 맞는다. 작은 보조 단위로 빼 두면 호출부에서는 의도만 읽기 쉬워진다.
반대로 분기와 전제조건이 늘어나 책임이 커진다면, 하나의 스니펫에 전부 넣지 않는 편이 낫다. 절차와 helper를 나누거나 역할별로 쪼개 두는 편이 유지보수에 유리하다.
hsb.horse