bashで変換コマンドを使用して特定のディレクトリ内のすべての画像をサイズ変更するには?

bashで変換コマンドを使用して特定のディレクトリ内のすべての画像をサイズ変更するには?

~/somefolder/ファイル名が元のサイズで始まらないすべてのPNGファイルのサイズを元のサイズの50%に調整し、tn_asプレフィックスと元の名前を使用して出力ファイルの名前を変更したいと思います。tn_変換コマンドがあることを知ってインストールしました。私はこれがbashといくつかの魔法で行われると思いますが、私はUnixに初めて触れました。私はMac OSXを使用しています。

どうすればいいですか?

ベストアンサー1

これを行う1つの方法は次のとおりです(ファイルに入れてPOSIXシェル(たとえば、bashまたは)を使用して実行ksh)。

cd ~/somefolder/ || exit 1
for f in *.png
do
  case $f in
  (tn_*) continue ;;
  (*) convert "${f}" -resize 50%x50% "tn_${f}" ;;
  esac
done

最新のシェルでは、このcase構文をより簡潔な条件付きコマンドに置き換えることもできます。

cd ~/somefolder/ || exit 1
for f in *.png
do
    [[ "$f" != tn_* ]] && convert "${f}" -resize 50%x50% "tn_${f}"
done

(ただし、このコードはメモリから取得され、テストされていないため、convert実際のサイズ変更構文のコマンドを確認し、まずいくつかのサンプルディレクトリにあるいくつかのサンプルファイルで試してみてください。)

おすすめ記事