目次
はじめに
この記事では、サブディレクトリに存在する.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
に変換するスクリプトの書き方です。これにより、簡単に画像ファイルの形式を変更することができます。