【发布时间】:2016-01-08 16:45:09
【问题描述】:
我试图在重命名脚本期间将连续的四位数字添加到文件名的末尾。我遇到的问题是它只填充第一个文件并且添加的数字不是连续的。到目前为止,这是我的脚本:
起始文件名:
FILE-1.png
FILE-5.png
FILE-14.png
FILE-99.png
FILE-167.png
FILE-199.png
FILE-278.png
FILE-455.png
脚本:
a=`printf '%04d' "1"`
cd /${1-$PWD}
for i in *.png;
do mv $i `printf output.%04d.$a.png $(echo $i | sed 's/[^0-9]*//g')`;
let a=a+1
done
编辑:
我稍微更改了脚本,并在顶部合并了 fmt 变量。但我仍然希望它以第一组数字的数字顺序命名第二组数字,如下面的我想要的输出所示。
fmt=output.%04d
n=1
cd /${1-$PWD}
for i in *.png;
do mv $i `printf $fmt.%04d.png $(echo $i | sed 's/[^0-9]*//g') "$n"`;
n=$((n+1))
done
我的新输出:
output.0001.0001.png
output.0005.0007.png
output.0014.0002.png
output.0099.0008.png
output.0167.0003.png
output.0199.0004.png
output.0278.0005.png
output.0455.0006.png
原始输出:
output.0001.0001.png
output.0005.7.png
output.0014.2.png
output.0099.8.png
output.0167.3.png
output.0199.4.png
output.0278.5.png
output.0455.6.png
期望的输出:
output.0001.0001.png
output.0005.0002.png
output.0014.0003.png
output.0099.0004.png
output.0167.0005.png
output.0199.0006.png
output.0278.0007.png
output.0455.0008.png
非常感谢任何帮助!
【问题讨论】:
-
不知道为什么有人反对这个。它包含一个好问题的所有要素——输入、期望和实际输出,甚至尝试编写解决方案。
标签: shell unix sequential batch-rename