用于查找日期目录的正则表达式

时间:2010-10-29 16:11:11

标签: bash

我希望在dir中搜索...

a2010-02-10

如何使用日期格式搜索ls all dir

ls -d *(\d+)-(\d+)-(\d+)

它不像perl那样工作

什么是正确的格式

2 个答案:

答案 0 :(得分:3)

你的正则表达式似乎是正确的,但bash不支持完整的正则表达式。它支持wildcards,它不能总是以相同的方式工作。试试这个:

ls -d | grep -E '(\d+)-(\d+)-(\d+)$'

实际上,(\d+)组可以仅用\d+替换。

如果您更喜欢纯粹的bash解决方案,请尝试以下方法:

ls -d *[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]

如果需要,您可以将其简化为不太精确:

ls -d *[0-9]*-[0-9]*-[0-9]*

但我会继续使用grep,因为它更清楚你想要什么。你可以让它更清晰:

ls -d | grep -E '\d{4}-\d{2}-\d{2}$'

答案 1 :(得分:0)

使用shopt -s extglob,您可以执行以下操作:

ls -d *+([0-9])-+([0-9])-+([0-9])