我有一堆具有这种文件名的文件,想像这样重命名它们。
当前的:
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