regex - 在多种文件类型的查找命令中使用正则表达式

标签 regex bash file-extension

<分区>

我正在使用

find . -name '*.[cCHh][cC]' -exec grep -nHr "$1" {} ; \
find . -name '*.[cCHh]' -exec grep -nHr "$1" {} ;

在所有子目录中列出的以 .c、.C、.h、.H、.cc 和 .CC 结尾的所有文件中搜索字符串。但由于这包括两个命令,因此感觉效率很低。

如何使用单个正则表达式模式查找 .c、.C、.h、.H、.cc 和 .CC 文件?

我在 Linux 机器上使用 bash。

最佳答案

您可以使用 bool OR 参数:

find . -name '*.[ch]' -o -name '*.[CH]' -o -name '*.cc' -o -name '*.CC'

以上搜索当前目录和所有子目录以查找以以下结尾的文件:

  • .c, .h 或者
  • .C, .H 或者
  • .cc 或者
  • .CC.

关于regex - 在多种文件类型的查找命令中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12969479/

相关文章:

c# - 密码的正则表达式

javascript - 正则表达式:在一个第一次出现和另一个最后一次出现之间获取

regex - 使用 sed 转义正则表达式

linux - 如何修复 sed 无效命令代码'?

windows - 命令提示符 : Execute Commands from Any Text File (Not Having ".bat" or ".cmd" Extensions)

java - Java 正则表达式中的重音

linux - 验证文件记录 shell 脚本

正则表达式匹配 bash 中文件的全部内容

c - 我们在哪里使用 .i 文件以及如何生成它们?

r - 为 R 中文件夹中的所有文件添加文件扩展名