我在本地系统中运行 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"