Ubuntuで現在のディレクトリのファイルを再帰的に検索して置換する

Ubuntuで現在のディレクトリのファイルを再帰的に検索して置換する

ローカル システムで Ubuntu 14.04 と Magento Web サイトを実行しています。

現在、モジュール ディレクトリがあり、この現在のフォルダーとそのサブディレクトリ内のすべてのファイルで「Magento\Module」のすべての出現を「MyCompany\Module」に再帰的に置き換えたいのですが、検索と置換の文字列に「\」があるために機能していないようです。

すでに試しました:

find ./ -type f -readable -writable -exec sed -i "s/Magento\\Module/MyCompany\\Module/g" {} \;

しかし、全く機能しません。

誰か助けてください、緊急です。

答え1

シェルはエスケープの 1 つを消費している可能性があります。

$ echo sed "s/Magento\\Module/MyCompany\\Module/g"
sed s/Magento\Module/MyCompany\Module/g

したがって、追加のエスケープを追加するか、式全体を一重引用符で囲みます。

$ echo sed "s/Magento\\\Module/MyCompany\\\Module/g"
sed s/Magento\\Module/MyCompany\\Module/g

$ echo sed 's/Magento\\Module/MyCompany\\Module/g'
sed s/Magento\\Module/MyCompany\\Module/g

テスト中:

$ echo 'every occurrence of "Magento\Module"' | sed 's/Magento\\Module/MyCompany\\Module/g'
every occurrence of "MyCompany\Module"

関連情報