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

如何使用grep同时筛选.html或.php后缀的目标文件?

如何使用grep同时筛选.html或.php后缀的目标文件?

嗨,我来帮你搞定这个需求~你现在已经能筛选出名字带"dan"且后缀是.html的文件了,要加上.php的话,有几种实用的办法:

方法一:用grep的扩展正则实现OR匹配

你可以用grep -E开启扩展正则表达式,这样就能用|来表示“或”的逻辑,命令改成这样:

find . -type f -name "*dan*" | grep -E '\.(html|php)$'

我给你解释下细节:

  • -E:让grep支持扩展正则,这样|就能直接用来表示“或”
  • \.:转义点号,因为正则里.默认匹配任意字符,转义后才是匹配真正的.
  • $:匹配行尾,确保我们找的是文件后缀(避免匹配到比如test.html.txt这种文件)

方法二:直接用find本身实现,更高效

其实不用管道给grep,直接用find的-o选项就能实现“或”的逻辑,这样减少了进程开销,命令是:

find . -type f -name "*dan*" \( -name "*.html" -o -name "*.php" \)

这里的\( \)是用来分组的,确保-name "*dan*"和后面的两个后缀条件是“且”的关系,也就是找名字含dan并且是html或php文件的目标。

方法三:用Perl兼容正则(部分系统支持)

如果你的系统上grep支持-P选项(比如大部分Linux发行版),也可以这么写:

find . -type f -name "*dan*" | grep -P '\.(html|php)$'

这个和方法一逻辑类似,只是用了Perl风格的正则语法。

另外提个小细节:你原来的grep '.html'其实有个小问题——.会匹配任意字符,比如testXhtml也会被匹配到,所以加上\转义和$定位到行尾会更准确哦~

备注:内容来源于stack exchange,提问作者omarkn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:34:39