繁体   English   中英

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

[英]How to Replace a string pattern with another string pattern inside all files in directories and subdirectories

我正在重新构建我的网站,并且必须重新安排文件中的引用。 有一个包含许多子目录和php文件的目录。 我正在使用某种命令/脚本来搜索该目录中的每个文件以获取此模式并将其替换为自定义模式。

对于Eg:我想要替换one/two/three/ by /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,我有root和shell访问权限。

你正在寻找sed

find .  -exec sed -i "s/one\/two\/three/shopping\/shop\/ipad/g" '{}' \;
find . -type f|xargs perl -pi -e 's/one\/two\/three/shopping\/shop\/ipad/g'

测试和工作正常。如果只有one它也不会取代

你也可以在这里找到它

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM