Рекурсивно переименовывать файлы с помощью find и sed

Я хочу просмотреть несколько каталогов и переименовать все файлы, которые заканчиваются на _test.rb, в _spec.rb. Я так и не понял, что делать с bash, поэтому на этот раз подумал, что приложу некоторые усилия, чтобы добиться этого. Я пока что не понял, что я стараюсь сделать:

find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \;

NB: после exec появляется дополнительное эхо, так что команда печатается вместо выполнения, пока я ее тестирую.

Когда я запускаю ее, вывод для каждого совпадающего имени файла:

mv original original

т.е. замена sed была потеряна. В чем трюк?

80
задан opsb 25 January 2011 в 13:08
поделиться