目次
はじめに
この記事では、サブディレクトリに存在する.PNG, .png, .jpg, .jpeg, .JPG, .JPEG ファイルを.webp形式に変換し、元の画像ファイルを削除するスクリプトを、BashとFishシェルでそれぞれ実装する方法について説明します。
必要なツール
- ImageMagick (convert コマンドが使用されます)
Fishのスクリプト
コード
for img in /*.PNG /*.png /*.jpg /*.jpeg /*.JPG /*.JPEG
set name (basename $img .(string split -r -m1 '.' $img)[2])
set dir (dirname $img)
set new_path $dir/$name.webp
convert $img $new_path
rm $img
end
ワンライナー
for img in /*.PNG /*.png /*.jpg /*.jpeg /*.JPG /*.JPEG; set name (basename $img .(string split -r -m1 '.' $img)[2]); set dir (dirname $img); set new_path $dir/$name.webp; convert $img $new_path; rm $img; end
Bashのスクリプト
コード
#!/bin/bash
find . -type f \( -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' \) -exec sh -c '
f="{}"
d=$(dirname "$f")
b=$(basename "$f")
nf="${d}/$(basename "${b%.*}").webp"
convert "$f" "$nf"
rm "$f"
' \;
ワンライナー
find . -type f \( -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' \) -exec sh -c 'f="{}"; d=$(dirname "$f"); b=$(basename "$f"); nf="${d}/$(basename "${b%.*}").webp"; convert "$f" "$nf"; rm "$f"' \;
結論
以上がBashとFishで.PNG, .png, .jpg, .jpeg, .JPG, .JPEG ファイルを.webpに変換するスクリプトの書き方です。これにより、簡単に画像ファイルの形式を変更することができます。