Как изменить имя файла, например file_name.mt2, на file_name.mt0002?

У меня есть куча файлов с такими именами файлов, и я хотел бы переименовать их так

Текущий:

file_name.mt0 file_name.mt1 file_name.mt2 file_name.mt3 file_name.mt4 file_name.mt5 file_name.mt6 file_name.mt7 file_name.mt8 file_name.mt9 file_name.mt10 file_name.mt11 

Новое:

 file_name.mt0000 file_name.mt0001 file_name.mt0002 file_name.mt0003 file_name.mt0004 file_name.mt0005 file_name.mt0006 file_name.mt0007 file_name.mt0008 file_name.mt0009 file_name.mt0010 file_name.mt0011 

Заранее спасибо ~~

Следующий скрипт может сделать это:

 #! /usr/bin/ksh typeset -Z4 N find . -name 'file_name.mt*' | while read FN do N=${FN#./file_name.mt} mv $FN file_name.mt$N done 

Простой, но мощный переименовать команду Larry Walls – правильный выбор:

rename 's/(\d+)$/sprintf("%04d",$1)/e' file*

 #!/bin/bash for i in file_name*; do nf=`printf "file_name.mt%04d" ${i//[!0-9]/}`; mv $i $nf; done 

Вот скрипт bash, который может делать то, что вы хотите. Убрал ls, и просто с помощью шарика. Хорошая ссылка @Sparkhawk