如何使用目录和子目录中的所有文件中的另一个字符串模式替换字符串模式

时间:2012-12-28 22:32:46

标签: linux shell grep

我正在重新构建我的网站&必须重新安排文件中的引用。有一个包含许多子目录的目录。 php文件。我正在使用某种命令/脚本来搜索每个&该模式的该目录中的每个文件&用自定义模式替换它。

对于例如:我想用one/two/three/替换/shopping/shop/ipad的确切匹配项。换句话说,如果任何文件包含一些字符串For Eg:

location:index.php?p=one/two/three/abcdefg&aid

然后应该用

代替
location:index.php?p=/shopping/shop/ipad/abcdefg&aid

请注意,内容替换应发生在每个文件内,主目录中的每个目录/子目录中(例如主目录名称为abc&所有子目录和文件都在abc)。不应更改目录名称本身。我怎样才能实现这一目标?我的服务器运行linux&我有根& shell访问。

3 个答案:

答案 0 :(得分:1)

您正在寻找

sed

find .  -exec sed -i "s/one\/two\/three/shopping\/shop\/ipad/g" '{}' \;

答案 1 :(得分:1)

find . -type f|xargs perl -pi -e 's/one\/two\/three/shopping\/shop\/ipad/g'

测试并且工作正常。如果有o,它也不会替换 nly one

你也可以找到它here

答案 2 :(得分:0)

试试这个:

find . -type f -print0 | xargs -0 sed -i 's/one\/two\/three/shopping\/shop\/ipad/g'