我认为我相当精通 tcl 中的正则表达式,但在 shell 中,我很新。语法似乎略有不同。
我只是想递归地查找名称中包含 multib 或 multi_b 的所有文件。
find . -type f -regex ".*multi(b|_b).*"
不起作用。即使去掉表达式中的“|_b”也找不到匹配项。看来我必须转义括号才能分组,这与 tcl 中的做法相反。
find . -type f -regex ".*multi\(b\).*"
匹配。但是,如果我添加 OR 字符,则不会得到任何匹配项。
find . -type f -regex ".*multi\(b|_b\).*"
没有匹配。我在这里缺少什么明显的东西吗?
anubhava 的建议就是问题所在。使用 -regextype egrep 有效。但我想知道为什么该模式不是默认模式。