Unixfind:多种文件types

我想用多种文件types来运行find -name。 例如。

find -name *.h,*.cpp 

这可能吗?

 $ find . -name '*.h' -o -name '*.cpp' 

要在man页中find这个信息,inputman find然后input/OPERATORS来search操作/OPERATORS然后回车。

. GNU find不是必须的,但是在Unix中是必须的。 在这两种情况下,引号都很重要,如果这些types的文件出现在当前目录中,则将引起错误。

在一些系统上(比如Cygwin),括号是必须的,以使扩展集合包含在内:

 $ find . \( -name '*.h' -o -name '*.cpp' \) 

那就是我用的

 find . \( -name "*.h" -o -name "*.cpp" \) -print 
 find . -name "*.h" -or -name "*.cpp" 

为我工作。

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

适用于search文件。

 find . \( -name '*.h' -o -name '*.cc' \)` 

适用于在其上执行命令

 find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\." 

你也可以使用-regex工具:

find -E . -iregex ".*\.(js|jsx|html|htm)"

请记住,正则expression式看完整的绝对path:

有关testing用例的正则expression式的解释,请查看: https : //regex101.com/r/oY1vL2/1

-E (作为path之前的标志)启用扩展(现代)正则expression式。

这是BSD find (Mac OSX 10.10.5)