我想重命名文件编号:我有一个'???'的文件 格式我需要把它们放在'????'中.
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文件.
使用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)
只需使用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)