Написал от нечего делать этот скрипт.
Ссылка на Patebin.
Пример файла правил (могут быть комментарии и пробельные строки):
# jpeg -> jpg
.jpeg .jpg user group 200
foto photo * * *
'file with spaces ' 'file_non_spaces_' * * *
Пример вызова:
$ ./massmv.sh ./files/ -r ./rules.txt -l ./log.txt
В логе будет что-то вроде этого:
Перемещён: ./files/other_3.jpeg -> ./files/other_3.jpg
Перемещён: ./files/foto_6.jpeg -> ./files/foto_6.jpg
Перемещён: ./files/other_2.jpeg -> ./files/other_2.jpg
Перемещён: ./files/foto_8.jpeg -> ./files/foto_8.jpg
И т.д.
Также можете выбрать опции (mv — стандартно, cp, cp all):
$ ./massmv.sh ./files/ -r ./rules.txt -l ./log.txt -c # cp
$ ./massmv.sh ./files/ -r ./rules.txt -l ./log.txt -ca # cp all
Будут вопросы — пишите :)