Unix查找:多种文件类型

时间:2011-08-25 12:44:21

标签: unix find

我想使用多种文件类型运行find -name。 例如。

 find -name *.h,*.cpp

这可能吗?

7 个答案:

答案 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