我目前正在开展一个项目,我希望在多个地方更改图片。
old file dir: /images/icons/helpPop.png
new file dir: /public/website_pngs/icons-buttons/button_question_mark.png
我想试试
grep -rl 'images/icons/helpPop' . | xargs sed -i 's/images/icons/helpPop/public/website_pngs/icons-buttons/button_question_mark/g'
但我知道这不行。我正在寻找分隔符,并希望得到一些额外的建议。
答案 0 :(得分:0)
for i in grep -rl 'images/icons/helpPop' . ; do cp $i $i.bak; sed -i 's/images\/icons\/helpPop/public\/website_pngs\/icons-buttons\/button_question_mark/g' < $i.bak > $i; done
答案 1 :(得分:0)
我正在研究分隔符,并希望得到一些额外的建议。
一些建议:
"s#$old#$new#g" or "s@$old@$new@g"
(双引号!). (period/dot)
。因为它在正则表达式中表示any char
。 可能是一个像这样的纯文本的危险操作。 (幸运的是,你的路径中没有.*
^ _ ^)或者你想要工作代码?
编辑评论:
您不需要“设置”分隔符,只需使用它,就像您使用/
一样,看一下这个例子:
kent$ echo "/////"|sed 's#/#?#g'
?????
kent$ echo "/////"|sed 's^/^?^g'
?????
kent$ echo "/////"|sed 's%/%?%g'
?????
kent$ echo "/////"|sed 's;/;?;g'
?????