You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写find命令匹配多后缀文件,批量替换javax为jakarta?

递归替换.java和.xml文件中的"javax"为"jakarta"

推荐方案:用-name配合逻辑或(直观易读)

不需要复杂正则,直接用find的-o选项实现多后缀匹配,命令如下:

find . -name '*.java' -o -name '*.xml' | xargs sed -i 's/javax/jakarta/g'

如果你的项目里存在带空格的文件名,建议加上-print0和xargs -0避免出错:

find . -name '*.java' -o -name '*.xml' -print0 | xargs -0 sed -i 's/javax/jakarta/g'

正则匹配方案:正确使用-regex

你之前的正则写法错误,原因是find的-regex默认匹配完整文件路径,且默认使用基本正则表达式(BRE),以下是正确写法:

基本正则写法

find . -regex '.*\.\(java\|xml\)$' | xargs sed -i 's/javax/jakarta/g'

扩展正则写法(更简洁)

加上-regextype posix-extended后,可以使用更简洁的扩展正则语法:

find . -regextype posix-extended -regex '.*\.(java|xml)$' | xargs sed -i 's/javax/jakarta/g'

之前正则失败的原因

  • 第一个正则^.*\.(java|xml)$:默认BRE下|需要转义,且^锚定路径开头,但find返回的路径以./开头,写法不符合匹配规则;
  • 第二个正则.*/^.*\.(java|xml)$:^是行首锚点,放在路径中间无意义,导致完全无法匹配任何文件路径。

内容的提问来源于stack exchange,提问作者Carla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:25:39