gpt4 book ai didi

bash - 如何使用 awk 或 sed 递归查找/替换字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:11 25 4
gpt4 key购买 nike

如何查找并替换每次出现的:

subdomainA.example.com

subdomainB.example.com

递归地在 /home/www/ 目录树下的每个文本文件中?

最佳答案

find /home/www \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/subdomainA\.example\.com/subdomainB.example.com/g'

-print0 告诉 find 打印由空字符分隔的每个结果,而不是换行。万一您的目录中包含名称中带有换行符的文件,这仍然可以让 xargs 处理正确的文件名。

\( -type d -name .git -prune\) 是一个完全跳过所有名为 .git 的目录的表达式。如果您使用 SVN 或有其他想要保留的文件夹,您可以轻松扩展它 - 只需匹配更多名称即可。它大致相当于 -not -path .git,但效率更高,因为它不是检查目录中的每个文件,而是完全跳过它。由于 -prune 的实际工作原理,后面的 -o 是必需的。

有关详细信息,请参阅 man find

关于bash - 如何使用 awk 或 sed 递归查找/替换字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com