gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:36:51 24 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/1583219/

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