Вам не нужно find
здесь, так как вы просто ищете в одном каталоге, просто цикл оболочки сделает эту работу. Вам также не нужно экранировать точку в шаблоне подстановки имени файла.
for pathname in "$folder"/*-[0-9].jpg; do
[ -f "$pathname" ] && cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
done
Замена параметра ${variable%pattern}
удаляет pattern
из конца значения variable
.
Тест -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 {} +