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"

相关内容