Как grep только указанные имена папок - PullRequest
0 голосов
/ 10 августа 2011

У меня есть такая структура

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 ]

1 голос
/ 10 августа 2011

Попробуйте с помощью regExp:

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

1 голос
/ 10 августа 2011

С 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
1 голос
/ 10 августа 2011
ls | egrep '^[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}$'
1 голос
/ 10 августа 2011

Вы можете сделать это без grep:

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

Это прекрасно работает, если у вас нет других имен папок, следующих по тому же шаблону без указания даты, как aaaa-bb-cc_dd-ee-ff, так как они также будут перечислены в приведенной выше команде.

Вы даже можете быть менее строгими и перечислить все, что имеет - на 5-й позиции:

ls -d ????-*
0 голосов
/ 10 августа 2011

У вас есть вся информация на страницах руководства.Взгляните на найти

...