2010-10-29 121 views
1

我期待以搜索目录,可...正则表达式查找日期DIR

a2010-02-10

如何搜索LS的所有目录与日期格式

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

它不工作如Perl

什么是正确的格式

回答

3

你的正则表达式似乎是正确的,但庆典d不支持完整的正则表达式。它支持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}$' 
0

随着shopt -s extglob,你可以这样做:

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