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