Ubuntu находит и заменяет в файлах текущего каталога рекурсивно

Ubuntu находит и заменяет в файлах текущего каталога рекурсивно

Я использую Ubuntu 14.04 и веб-сайт Magento в своей локальной системе.

Теперь у меня есть каталог модулей, в котором я хочу заменить все вхождения «Magento\Module» на «MyCompany\Module» во всех файлах внутри этой текущей папки и ее подкаталогов рекурсивно, конечно, но я предполагаю, что это не сработает из-за того, что в моей строке поиска и замены есть «\".

Я уже пробовал:

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

Но это вообще не работает.

Помогите, пожалуйста, кто-нибудь, это срочно.

решение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"

Связанный контент