我想递归地(在项目目录中)用“jakarta”替换“javax”一词。 这适用于以“java”结尾的文件:
find . -name '*.java' | xargs sed -i 's/javax/jakarta/g'
我也需要对 XML 文件执行相同的操作。为了使用单个命令,我尝试修改查找表达式,如下所示:
find . -regex '^.*\.(java|xml)$'
但是,没有找到任何文件。我也尝试过:
find . -regex '.*/^.*\.(java|xml)$'
但还是什么都没有。你能帮我重写查找器表达式以使用多个文件后缀吗? 谢谢
最佳答案
您仍然可以多次使用 -name
来匹配多个模式:
find . \( -name '*.java' -o -name '*.xml' \) -print0 |
xargs -0 sed -i 's/javax/jakarta/g'
如果您想使用-regex
,那么您还应该使用-regexrtype
选项来扩展正则表达式匹配:
find . -regextype awk -regex '.+\.(java|xml)$' -print0 |
xargs -0 sed -i 's/javax/jakarta/g'
记下 -print0
和 xargs -0
选项以处理带有特殊字符的文件名。
关于regex - 用正则表达式查找替换文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73869636/