0

我目前正在做一个项目,我想在多个地方更改图片。

  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'

但我知道那是行不通的。我正在研究定界符,并希望得到一些额外的建议。

4

2 回答 2

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
于 2013-03-22T14:12:27.270 回答
0

我正在研究定界符,并希望得到一些额外的建议。

一些建议:

  • 如果旧/新目录已修复,请尝试将它们保存到变量中
  • 在 sed 中使用不同的分隔符,例如"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'
?????
于 2013-03-22T14:15:06.163 回答