MENU

fish,bashでのPNGとJPGファイルのWebPへの一括変換

単純な内容だけれどよく使うかつよく忘れるので。これ、本当はBardに書かせようと思っていたんだよね。でも、Bardはfishスクリプトだと言っているのにBashのスクリプトしか書いてくれなかった。あと日本語も通じづらくて、かなり明確に指示してやる必要がある。結論として、ChatGPT-4にはまだ及ばないなぁ、と。アホになっているという噂のChatGPT-4だが、それでも今出ているAIチャットでは一番なんじゃないだろうか。

ということで、記事を書かせた。

目次

イントロ

こんにちは、皆さん。

今日はLinuxシェルを使ってカレントディレクトリのPNGとJPGファイルを一括でWebP形式に変換する方法についてご紹介します。この作業は、fish shellとbashの両方で実行可能です。Macのターミナルや、Windows上のWSL2でももちろん実行可能です。

前提条件として、この記事で用いるconvertコマンドはImageMagickの一部なので、事前にシステムにインストールしておく必要があります。

Fish Shellでの変換

まず、Fish Shellを使った方法から見ていきましょう。以下のワンライナーを実行すると、カレントディレクトリの全ての.png.jpgファイルが.webpに変換されます。

for file in *.png *.jpg; convert $file -format webp (basename -s (string match -r "\..+" $file) $file).webp; end

このコマンドは、まず*.png *.jpgというパターンで全てのPNGとJPGファイルを選択します。そして、convertコマンド(ImageMagickの一部として提供されている)を使ってそれぞれのファイルを.webpフォーマットに変換します。

Bashでの変換

次に、Bashを使った方法を見ていきましょう。以下のワンライナーを実行すると、同様にカレントディレクトリの全ての.png.jpgファイルが.webpに変換されます。

for file in *.{png,jpg}; do convert "$file" -format webp "${file%.*}.webp"; done

このコマンドでは、*.{png,jpg}というパターンマッチングを使用して.pngと.jpgファイルを一度に全て選択します。そして、"${file%.*}.webp"という表現を用いて元のファイル名から拡張子を取り除き、新しい.webp拡張子を追加します。

結論

以上が、Fish ShellとBashを使ってPNGとJPGファイルをWebPに一括変換する方法です。このようなスクリプトは、特に大量の画像ファイルを効率的に変換したいときに非常に便利です。

寸評

実家のような安心感。なんだかんだでChatGPT-4パイセンが今のところナンバーワンですわ……。

  1. fishでカレントディレクトリのすべてのpngをwebpにconvertするワンライナ
  2. いいね。pngだけではなくjpgについてもやりたい時は?
  3. ありがとう。 ここまでの内容を、ブログの記事としてまとめてください。

質問の数もシンプル。

目次