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

区切り文字を調べています。追加のアドバイスをお願いします。

いくつかの提案:

  • 古い/新しいdirが修正されている場合は、それらを変数に保存してみてください
  • sedで異なる区切り文字を使用します"s#$old#$new#g" or "s@$old@$new@g"(例:二重引用符!!)
  • より安全にするため. (period/dot)に、古いdirテキストでをエスケープする方がよいでしょう。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 に答える
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 に答える