変更したファイル名をコピーしてください。

変更したファイル名をコピーしてください。

ディレクトリ内の数字で終わるすべてのファイルを見つけて(この部分では問題ありません)、変更された名前でコピーする必要があります(この部分をどうするかわかりません)。通常:

find $folder -maxdepth 1 -type f -name '*-[0-9]\.jpg'

これらすべてのファイルを同じディレクトリにコピーし、名前を付けます。$originalName-mini.jpg

答え1

find+bash解決策:

find $folder -maxdepth 1 -type f -name "*-[0-9].jpg" -exec \
bash -c 'cp "$1" "${1:0:-4}-mini.jpg"' _ {} \;

答え2

実際にはこれは必要ありませんfind。単一のディレクトリのみを表示しているため、シェルループだけで操作を実行できます。また、ファイル名のグローブパターンでドットをエスケープする必要はありません。

for pathname in "$folder"/*-[0-9].jpg; do
    [ -f "$pathname" ] && cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
done

パラメータ置換は${variable%pattern}値の末尾から削除されます。patternvariable

この-fテストでは、名前が間違ったディレクトリではなく、通常のファイル(またはそれを指すシンボリックリンク)を扱っていることを確実に確認できます。


find同じ操作を実行するために使用します。

find "$folder" -maxdepth 1 -type f -name '*-[0-9].jpg' -exec sh -c '
    for pathname do
        cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
    done' sh {} +

答え3

これを行う1つの方法は、次のコマンドをスクリプトに追加することです。元の名前があると仮定すると、$originalName次のものを使用できます。

cp $originalName $(basename $originalName .jpg)-mini.jpg

関連情報