Bash脚本使用变量count替换图像编号



我有一个有200张图片的html文档。html页面现在只包含所有名为g001.jpg的图像。镜像目录下的镜像名称为g001.jpg ~ g200.jpg。我需要将名称g001.jpg替换为g002.jpg, g002.jpg, g001.jpg等。我一直在尝试用bash来做这件事。以下是我的文件:

#!/bin/bash
for i in {001..200}
do
sed "s/g001.jpg/g$i.jpg/g" gallery2.html > gallery3.html
done

**要明确的是,我试图重命名引用到html文档中的图像文件名。html文档不需要重命名。

这当然会多次将它们重命名为g1.jpg然后以g2.jpg重新启动然后以g3.jpg重新启动,以此类推直到多次得到g200.jpg。我错过了什么?

提前感谢!

这里有很多问题。如果像这样使用sed,它将替换每个&每次出现g001.jpg,而不是第一次出现。你还想替换g001.jpg with g002.jpg, g002.jpg, g004.jpg所以你需要从2号开始循环。下面的代码应该可以为您工作:

for l in {2..200}
do
   i=$(printf "%03d" $l)
   sed -i.bak "1,/g001.jpg/{s/g001.jpg/g${i}.jpg/g;}" gallery2.html
done

注意,由于上面的-i标志,sed将进行内联编辑并将替换的文件保存在同一文件中。

只需将循环变量合并到输出文件名中。注意gallery$i_new.html是我的命名…

for i in {001..200}
do
   sed "s/g001.jpg/g$i.jpg/g" gallery$i.html > gallery$i_new.html
done

最新更新