Answers:
您的正则表达式有两个错误:
它错过了一个(字面)点后 foo
。
find
要求你逃避括号 不 用作字面括号。
此外,你应该逃避之前的点 sh
,因为它会匹配任何角色。
fixed命令现在显示为:
find . -regex ".*foo\(\.bar[0-9]\)?\.sh"
顺便说一下,错误2.是我不喜欢的原因 find
的 -regex
开关:不一致的转义。
当然,它有效 grep -P
使用Perl兼容正则表达式(PCRE),因此有更多的功能,但更少的惊喜和陷阱。
就个人而言,我会用:
find . | grep -P "foo(\.bar\d)?\.sh"