我想使用多种文件类型运行find -name。 例如。
find -name *.h,*.cpp
这可能吗?
答案 0 :(得分:84)
$ find . -name '*.h' -o -name '*.cpp'
要在man
页面中查找此信息,请键入man find
并键入/OPERATORS
并按Enter键搜索运算符。
对于GNU find,.
并不是绝对必要的,但在Unix中是必需的。在任何一种情况下,引号都很重要,如果这些类型的文件出现在当前目录中,则将它们排除将导致错误。
在某些系统(例如Cygwin)上,必须使用括号来使包含扩展集:
$ find . \( -name '*.h' -o -name '*.cpp' \)
答案 1 :(得分:18)
这就是我用的东西
find . \( -name "*.h" -o -name "*.cpp" \) -print
答案 2 :(得分:10)
find . -name "*.h" -or -name "*.cpp"
适合我。
答案 3 :(得分:8)
find . -name '*.h' -o -name '*.cc'`
适用于搜索文件。
find . \( -name '*.h' -o -name '*.cc' \)`
适用于对它们执行命令
find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
答案 4 :(得分:4)
您还可以使用-regex
实用程序:
find -E . -iregex ".*\.(js|jsx|html|htm)"
请记住,正则表达式会查看完整的绝对路径:
有关带有测试用例的正则表达式的解释,请查看:https://regex101.com/r/oY1vL2/1
-E
(作为路径前的标志)启用扩展(现代)正则表达式。
这适用于BSD find
(Mac OSX 10.10.5)
答案 5 :(得分:1)
这就是我的用法。我强烈推荐“-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)'
答案 6 :(得分:0)
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new