我想使用多个文件类型运行find -name命令。例如:
find -name *.h,*.cpp
这个可行吗?
$ find . -name '*.h' -o -name '*.cpp'
要在man
页面中查找此信息,请键入man find
,然后输入/OPERATORS
进行搜索并按Enter。.
不是必需的,但在Unix中是必需的。在任何情况下,引号都很重要,如果当前目录中出现这些类型的文件,则省略它们会导致错误。$ find . \( -name '*.h' -o -name '*.cpp' \)
*.h
和 *.cpp
可能是必要的。 - Joachim Sauer-o
表示 "或"。 - Eric Wilson这就是我使用的东西。
find . \( -name "*.h" -o -name "*.cpp" \) -print
你也可以使用 -regex
工具:
find -E . -iregex ".*\.(js|jsx|html|htm)"
请记住,正则表达式查看完整的绝对路径:
有关该带测试用例解释的正则表达式,请访问:https://regex101.com/r/oY1vL2/1
-E
(作为路径之前的标志)启用扩展(现代)正则表达式。
这适用于BSD find
(Mac OSX 10.10.5)。
find . -name "*.h" -or -name "*.cpp"
对我来说可行。
find . -name '*.h' -o -name '*.cc'`
用于搜索文件的工具。
find . \( -name '*.h' -o -name '*.cc' \)`
用于执行命令的工具
find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
\( ... \)
需要在传递给 xargs
等命令时使用并不是显而易见的。如果没有大括号,命令总是只在最后一个扩展上执行。 - djangonaut这是我使用的方法。我强烈推荐使用"-regextype posix-extended"参数。
find . -type f -iname "*.log" -o -iname "*.gz"
find . -type f \( -name "*.gz" -o -name "*.log" \)
find . -type f -regex '.*\(\.gz\|\.log\)'
find . -type f -regextype posix-extended -regex '.*.(log|gz)'
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new
*.h
和*.cpp
示例!https://dev59.com/YXVC5IYBdhLWcg3wfhKL - Eric Wilson