find 命令中的正则表达式。使用交替的简单搜索似乎不起作用

问题描述 投票:0回答:1

我认为我相当精通 tcl 中的正则表达式,但在 shell 中,我很新。语法似乎略有不同。

我只是想递归地查找名称中包含 multibmulti_b 的所有文件。

find . -type f -regex ".*multi(b|_b).*"

不起作用。即使去掉表达式中的“|_b”也找不到匹配项。看来我必须转义括号才能分组,这与 tcl 中的做法相反。

find . -type f -regex ".*multi\(b\).*"

匹配。但是,如果我添加 OR 字符,则不会得到任何匹配项。

    find . -type f -regex ".*multi\(b|_b\).*"

没有匹配。我在这里缺少什么明显的东西吗?

regex tcsh file-find
1个回答
0
投票

anubhava 的建议就是问题所在。使用 -regextype egrep 有效。但我想知道为什么该模式不是默认模式。

© www.soinside.com 2019 - 2024. All rights reserved.