Bro*_*kie 4 find regular-expression
本质上,我想知道如何在一个中运行 2 个(或更多)查找命令 - “或”搜索而不是“和”:
find . -name "*.pem"
find . -name "*.crt"
Run Code Online (Sandbox Code Playgroud)
Ste*_*itt 15
find
的“或”运算符是-o
:
find . -name "*.pem" -o -name "*.crt"
Run Code Online (Sandbox Code Playgroud)
它是短路的,即只有在第一部分为假时才会评估第二部分:匹配的文件*.pem
将不会针对*.crt
.
-o
优先级低于“and”,无论是显式 ( -a
) 还是隐式;如果要组合运算符,则可能需要用括号将“或”部分括起来:
find . \( -name "*.pem" -o -name "*.crt" \) -print
Run Code Online (Sandbox Code Playgroud)
在我的测试中,这比使用正则表达式要快得多,正如您所期望的(正则表达式的测试成本比 glob 更昂贵,并且-regex
测试完整路径,而不仅仅是文件名-name
)。