如何将 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

相关内容