file_name.mt2와 같은 파일 이름을 file_name.mt0002로 변경하는 방법은 무엇입니까?

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

미리 감사드립니다~~

답변1

다음 스크립트로 이 작업을 수행할 수 있습니다.

#! /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

답변2

Larry Walls의 간단하면서도 강력한 이름 바꾸기 명령이 올바른 선택입니다.

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

답변3

#!/bin/bash

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

다음은 원하는 작업을 수행하는 bash 스크립트입니다. ls를 제거하고 glob을 사용했습니다. 훌륭한 참고자료 @Sparkhawk

관련 정보