
Я использую 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"