如何仅grep指定的文件夹名称

时间:2011-08-10 11:40:00

标签: bash grep directory ls

我有这样的结构

201
202
203
204
205
206
2011-08-04_03-01-15
2011-08-05_03-01-15
2011-08-08_03-01-15
2011-08-09_03-00-02
2011-08-10_14-16-37

我只需要grep文件夹,日期名称如“2011-08-05_03-01-15” 我试过ls | grep'201'但在输出中有201个文件夹到

用ls |的方式grep'2011'是不可接受的,因为它是硬编码。

5 个答案:

答案 0 :(得分:1)

你可以在没有grep的情况下做到这一点:

ls -d ????-??-??_??-??-??

这可以正常工作,假设您没有其他文件夹名称遵循相同的模式而没有日期,例如aaaa-bb-cc_dd-ee-ff,因为上述命令也会列出这些名称。

您甚至可以减少限制,并列出第5个位置-的所有内容:

ls -d ????-*

答案 1 :(得分:1)

使用grep

ls -d */ | grep -E '[0-9]{4}(-[0-9]{2}){2}_([0-9]{2}-){2}[0-9]{2}'

使用find

find * -regextype posix-extended \ 
       -regex '[0-9]{4}(-[0-9]{2}){2}_([0-9]{2}-){2}[0-9]{2}' \
       -type d

答案 2 :(得分:1)

ls | egrep '^[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}$'

答案 3 :(得分:1)

尝试使用regExp:

ls | grep -E“....- - _ * - -

答案 4 :(得分:0)

您拥有手册页中的所有信息。 看看find