如何在linux当前目录下查找.h、.c和.cc文件?

ker*_*nel 2 shell find pattern-matching

find . -name "*.[hc]|*.cc"
Run Code Online (Sandbox Code Playgroud)

上面的不起作用,为什么?

更新

如何找到具有单一模式的这 3 种文件?

Mic*_*man 5

它不起作用,因为-name需要一个 shell 模式。您可以-regex改为使用,或者像这样组合您的模式:

find . -name '*.c' -o -name '*.h' -o -name '*.cc'
Run Code Online (Sandbox Code Playgroud)

编辑
要使用单个模式执行此操作,您需要一个正则表达式:

find . -regextype posix-extended -regex '.*\.(c|h|cc)'
Run Code Online (Sandbox Code Playgroud)

我敢肯定,您可以使用默认的 emacs 正则表达式来实现;我不使用它们,也不知道主要区别,所以我选择了我知道的那个。

如果您真的想使用单个 shellglob,那您就不走运了:多个字符串的唯一语法是{a,b},而find. 但是在我的第一个示例中,这种命令构建/链接没有任何问题。它是如何find使用的。