В 4 варианте почти правильно. Должно быть
for i in *.xmc; do mv $i `basename $i .xmc`; done
(тело цикла обрамляется do ...; done, у basename расширение указывается вместе с точкой)
в цикле можно и просто
mv $i ${i%.xmc}А что до первых трех вариантов - вы будете смеяться, но о существовании команды rename узнал только сегодня
UPD.
Почитал маны на rename. Их оказалось несколько, малость различающихся.
Вы пытались работать по варианту
rename <perlexpr> <files>, такие тоже бывают, но установленный в pra вариант выдает
Usage:
rename [options] <expression> <replacement> <file>...
То есть его надо использовать как
C find вроде бы ни один из вариантов не сработает, так как со стандартного ввода имена не принимает.
С ним можно разве что так:
find . -name "*.xmc" -print | while read i; do mv $i ${i%.xmc}; done
Ну и напоследок генератор тренировочных файлов, чтобы нужное не убивать:
mkdir tst
cd tst
for i in `seq 1 100`; do touch file$i.xmc ; done