从find和sed重命名中排除目录

时间:2013-08-04 18:58:41

标签: linux bash replace sed find

我正在使用此命令浏览所有文件,目录和子目录,以将oldurl.com的任何提及更改为newurl.org

find . -type f -name '*.php' -exec sed -i 's|oldurl.com|newurl.org|g' {} +

它运行正常但是,我需要从任意更改中排除三个子目录:/cache/archive/etc,因为在这些路径中使用上述命令更改URL其他脚本。

没有太多运气找到答案......它甚至可能吗?

非常感谢任何建议/帮助。

1 个答案:

答案 0 :(得分:6)

使用查找-not选项:

find . -type f -name '*.php' -not \( -path './etc/*' -o -path './cache/*' -o -path './archive/*'  \) -exec sed -i 's|oldurl.com|newurl.org|g' {} \;