查找名称中包含 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,前导零)。左括号后的 ?:
告诉正则表达式引擎不应捕获该组。
我有一个很长的目录列表,我需要找到比 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,前导零)。左括号后的 ?:
告诉正则表达式引擎不应捕获该组。