画像のサイズを変更し、別のフォルダに移動し、名前を変更するbashスクリプトを作成します。

画像のサイズを変更し、別のフォルダに移動し、名前を変更するbashスクリプトを作成します。

約300個の画像を含むフォルダがあり、各画像は300x300ピクセルでアーティストの画像です。そのフォルダ内という別のフォルダを作成しました60

各画像のサイズを60×60ピクセルに調整し、-60ファイル名を追加してファイル名を変更し、/60フォルダに移動したいと思います。

だからというイメージがあり、bob-dylan.jpgサイズを変更してから名前を変更して になるようにbob-dylan-60.jpg移動すると仮定します/60/bob-dylan-60.jpg

そのためにシェルスクリプトを直接書いてみましたbatch-resize.sh。スクリプトを実行可能にしました。このスクリプトはImageMagickを使用しようとします。これが私が今まで持っているものです。

一括サイズ変更.sh

#! /bin/bash

for f in /mnt/c/Users/jwan/Pictures/bejebeje-artist-images/*; do
  mogrify -path /mnt/c/Users/jwan/Pictures/bejebeje-artist-images/60 -resize 60x60 $f
done

これにより画像のサイズが変更され、/60ディレクトリに移動します。しかし、ファイル名は変更されません。名前を変更するのは本当に大変です。

オンラインで検索してみるとたくさんの%記号がありましたが説明はありませんでした。

ファイル名を変更しなければならないという点に基づいてビルドする方法を教えて説明していただきありがとうございます。どのように名前の変更が完了しました。

ベストアンサー1

次のように実行しますbash scriptname /path/to/files

#!/bin/bash
for f in "$1"/*.{jpg,png}; do
  [ -f "$f" ] || continue
  base=$(basename "$f")
  convert -resize 60x60 "$f" "$1/60/${base%.*}-60.${base##*.}"
done

必要に応じて、スタンドにさらに拡張機能を追加できます。

convert入力ファイルをインポートし、$fサイズ変更結果をディレクトリに入れます$1/60$1is引数)。

  • [ -f "$f" ] || continuef通常のファイルではない場合は、この操作をスキップしてください。ディレクトリのサイズを変更したくないでしょう。
  • basenamegets はファイル名からパスを削除します。たとえばにa/b/c.jpgなりますc.jpg
  • ${base##*.}ファイルのデフォルト名から最後の点まですべてを削除します。だから拡張されました。
  • ${base%.*}拡張後にすべてを削除します。

おすすめ記事