Тьфу ...
Несколько советов по очистке вашего скрипта:
** Используйте sed, чтобы переводить сразу несколько символов, это поможет очистить и упростить задачууправлять:
dev:~$ echo 'áàaieeé!.txt' | sed -e 's/[áàã]/a/g; s/[éè]/e/g'
aaaieee!.txt
** вместо того, чтобы переименовывать файл для каждого изменения, запустите все ваши фильтры, затем сделайте один ход
$ NEWNAME='áàaieeé!.txt'
$ NEWNAME="$(echo "$NEWNAME" | sed -e 's/[áàã]/a/g; s/[éè]/e/g')"
$ NEWNAME="$(echo "$NEWNAME" | sed -e 's/aa*/a/g')"
$ echo $NEWNAME
aieee!.txt
** вместовыполняя цикл ls | read ...
, используйте:
for OLDNAME in $DIR/*; do
blah
blah
blah
done
**, чтобы разделить ваш путь обхода и переименовать логику в два сценария.Один сценарий находит файлы, которые необходимо переименовать, один сценарий обрабатывает нормализацию одного файла.Как только вы изучите команду 'find', вы поймете, что можете бросить первый скрипт:)