首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于sed将图像编号替换为变量计数的bash脚本

用于sed将图像编号替换为变量计数的bash脚本
EN

Stack Overflow用户
提问于 2013-04-23 23:03:38
回答 2查看 390关注 0票数 2

我有一个包含200张图片的html文档。html页面现在只包含名为g001.jpg的所有图像。图像目录中的图像名称为g001.jpg到g200.jpg。我需要将g001.jpg替换为g002.jpg、g002.jpg、g004.jpg等。这就是我所拥有的:

代码语言:javascript
复制
#!/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,然后是g3.jpg,以此类推,直到我多次获得g200.jpg。我遗漏了什么?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 23:41:20

这里有很多问题。如果像这样使用sed,它将替换出现的每一个g001.jpg,而不是第一个实例。你还想替换g001.jpg with g002.jpg, g002.jpg, g004.jpg,所以你需要用数字2开始循环。下面的代码应该对你有效:

代码语言:javascript
复制
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将进行内联编辑,并将替换的文件保存在同一文件中。

票数 1
EN

Stack Overflow用户

发布于 2013-04-23 23:11:36

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

代码语言:javascript
复制
for i in {001..200}
do
   sed "s/g001.jpg/g$i.jpg/g" gallery$i.html > gallery$i_new.html
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16172789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档