如何在linux下的当前目录下find.h,.c和.cc文件?

find . -name "*.[hc]|*.cc" 

以上不起作用,为什么?

UPDATE

如何find这三种文件的单一模式?

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

 find . -name '*.c' -o -name '*.h' -o -name '*.cc' 

编辑
要做到这一点与一个单一的模式,你会想要一个正则expression式:

 find . -regextype posix-extended -regex '.*\.(c|h|cc)' 

你可以用默认的emacs正则expression式,我敢肯定; 我不使用它们,也不知道主要的区别,所以我select了我所知道的。

如果你真的想使用一个shellglob,那么你倒霉了:多个string的唯一语法是{a,b}find不支持这个。 但是在我的第一个例子中,这种命令构build/链接没有任何问题。 这是如何find打算使用。

如果你真的想使用正则expression式

  find -regex "\(.*\.[hc]\|.*\.cc\)" 

应该做的伎俩,但更正常的做法是使用-o已经certificate。