我希望在dir中搜索...
a2010-02-10
如何使用日期格式搜索ls all dir
ls -d *(\d+)-(\d+)-(\d+)
它不像perl那样工作
什么是正确的格式
答案 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])