MENU

サブディレクトリ下の画像ファイルをwebp形式に変換するシェルスクリプト

目次

はじめに

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

目次