查找名称中包含 2000 年之后年份的目录

looking for directories with a year after 2000 in their names

我有一个很长的目录列表,我需要找到比 2000 年更新的目录。问题是文件夹日期没有保留,所以我必须按目录名称查找。

示例:

./aaa bbb aa ccc (1999)
./gggg rrr (1939)
./hhh bbb (2001)

我试着为这个名字想出一个正则表达式,但我不知道它有什么问题....它带来了所有的折叠,我只期待 1(在上面的例子中) find -E . -regex '.*(20[0-9]{2})*' -type d

然后我必须将 2000 和更新的文件夹移动到另一个 tmp 文件夹...

有什么想法吗?

在正则表达式中,括号是用于分组和捕获的元字符。至于匹配文字括号,你必须通过反斜杠转义它 \.

匹配 2001 和 2099 之间带括号的年份是通过以下方式完成的:

\(20(?:[1-9][0-9]|0[1-9])\)

正则表达式中的元括号将 [1-9][0-9](至少以 1 开头的两位数)和 0[1-9] 的替代模式(用竖线表示,|)分组(1 到 9,前导零)。左括号后的 ?: 告诉正则表达式引擎不应捕获该组。