ker*_*nel 2 shell find pattern-matching
find . -name "*.[hc]|*.cc"
Run Code Online (Sandbox Code Playgroud)
上面的不起作用,为什么?
更新
如何找到具有单一模式的这 3 种文件?
它不起作用,因为-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
使用的。