Задача одноразовая?
А то, может, krename подойдет.
Да, а в скрипте ошибка.
Надо вот так:
new=`echo "${i}" | tr -d "'"`
(то, что после =, забрано в бэктики)
И дополню предыдущего оратора. Здесь выполняется несколько действий.
echo ${i} пишет содержимое переменной i (имя очередного файла) в свой стандартный выходной поток.
Этот поток перенаправляется на вход (символом | ) команде tr (table replace), которая что-то с полученными данными делает (см. man tr) и пишет результат в свой выходной поток.
Далее, то, что получилось на выходе конвейера, перехватывается bash-ем (который все это запустил) и записывается в переменную new (об этом ему говорят бэктики).
А чтобы пробелы в именах файлов не влияли на скрипт, надо в mv все забрать в кавычки:
mv "$i" "$new"
И, на всякий случай, в echo тоже.