Использование find с регулярным выражением для поиска имени файла, начинающегося с цифры месяца - PullRequest
2 голосов
/ 12 февраля 2020

Я пытаюсь использовать поиск с регулярным выражением, чтобы найти все файлы, которые начинаются с числа, которое будет в пределах диапазона дня месяца (01 .. 31).

Это не работает

find . -type f -regex '[0-3][0-9]*'

Что такое регулярное выражение для ограничения первых двух цифр в диапазоне 1..31, но если день меньше десяти, ограничивается двумя цифрами (01, 02. .) и так далее, и использовать с командой find?

Я пробовал множество вещей, просматривал другие статьи stackoverflow и ни одно решение, упомянутое в других статьях, не работает.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Regex не подходит для выражения диапазонов номеров, как это. Вам нужно разбить его и сопоставить каждый шаблон отдельно ie. начиная с 0, 1 и 2, 3

Например:

^(0[1-9]|[12][0-9]|3[01])
0 голосов
/ 12 февраля 2020

Вы можете попробовать использовать следующий шаблон регулярных выражений:

^(3[01]|[12][0-9]|0[1-9])$

Ваша Linux команда:

find . -type f -regex '^(3[01]|[12][0-9]|0[1-9])$'

Вот объяснение шаблона регулярных выражений:

^(             start of input
    3[01]      match 30 or 31
    |          OR
    [12][0-9]  match 10-29
    |          OR
    0[1-9]     match 01-09
)$             end of input

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...