重命名BASH中的几个文件

Arm*_*man 4 bash renaming

我想重命名文件编号:我有一个'???'的文件 格式我需要把它们放在'????'中.

myfile_100_asd_4 to myfile_0100_asd_4
Run Code Online (Sandbox Code Playgroud)

谢谢阿曼.

不那么优雅解决方案:

#/bin/bash
snap=`ls -t *_???`
c=26 
for k in $snap 
do 

     end=${k}
     echo  mv  $k ${k%_*}_0${k##*_}_asd_4
     (( c=c-1 ))

done
Run Code Online (Sandbox Code Playgroud)

这对我有用,因为我也有myfile_100文件.

Mar*_*tin 8

使用rename,perl附带的一个小脚本:

rename 's/(\d{3})/0$1/g' myfile_*
Run Code Online (Sandbox Code Playgroud)

如果-n在表达式之前传递参数,它只会打印它将要执行的重命名,不执行任何操作.这样,您可以在重命名文件之前验证它是否正常工作:

rename -n 's/(\d{3})/0$1/g' myfile_*
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 5

只需使用shell,

for file in myfile*
do
    t=${file#*_}
    f=${file%%_*}
    number=$(printf "%04d" ${t%%_*})
    newfile="${f}_${number}_${t#*_}"
    echo mv "$file" "$newfile"
done
Run Code Online (Sandbox Code Playgroud)