Сценарий для копирования файлов с нужным именем

У меня проблема, с которой я сталкиваюсь в течение 6-7 часов, и я не могу ее преодолеть, поэтому я прошу вас помочь. Мне нужно создать сценарий bash, который обращается к папке и переименовывает все файлы из это с новым именем, за которым следует число, которое представляет алалфабическую иерархию и новое расширение.

Параметры находятся в следующем порядке:
(Новое имя, новое расширение и папка, где я ищу).
В качестве примера: ./rename.sh work .txt Documents
Предположим, что первоначально документ (Документы) содержал:
a.txt
b.txt
c.txt
Следовательно, при выполнении сценария в документе будет содержаться следующее: work01.txt (from a.txt)
work02.txt (из b.txt)
work03.txt (c.txt)

Проблема в том, что каким-то образом я дублирую файлы, и я создаю большой беспорядок. Вот сценарий (rename.sh):

#!/bin/bash if [ -z "$3" ] then echo "No argumets supplied" else mic="0" i="1" max="9" for file in `ls $3 | sort -V`; do if ( test $i -le 9) then cp $3/$file $3/$1$mic$i.$2 rm -r $3/$file else if ( test $i -ge 9 ) then cp $3/$file $3/$1$i.$2 rm -r $3/$file fi fi i=$((i+1)) done echo "$max" fi 

Если ваши файлы называются a.txt, b.txt и т. Д., То порядок сортировки по умолчанию должен позволять вам делать простое расширение глоссария имен файлов, вместо того, чтобы явно сортировать файлы по-умолчанию. Поэтому я предлагаю сделать что-то более похожее

 i=1 cd "$dir" for old in *."$ext"; do printf -v new '%s%02d.%s' "$newbase" $((i++)) "$ext" echo mv "$old" "$new" done 

после присвоения newbase="$1" , ext="$2" , dir="$3" (с подходящими проверками существования, конечно). Поиграйте с ним и удалите echo только печатный результат будет выглядеть правильно.