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。