find -regex - проблемы с символьными классами

Столкнулся с проблемой, что не могу использовать в find -regex символьные классы {1,3} и \s без которых мое выражение \s[0-9]{1,3}-22\s не работает.

Пробовал экранировать на подобии find . -regex '\\s[0-9]\{1,3\}-22\\s' - безуспешно.


Ответы (1 шт):

Автор решения: Intelligent Shade of Blue

По умолчанию find пользует emacs syntax для regex и не поддерживает интервалы ({}).

Вы можете поменять синтаксис используя опцию -regextype. Список поддерживаемых синтаксисов здесь.

Например egrep syntax подходит для вашей проблемы:

find . -regextype egrep -regex '.*\s[0-9]{1,3}-22\s.*'

Также нужно соответствие полному имени файла, поэтому в начало и конец добавлены .*.

PS: Информация по синтаксисам находится в info page, т. е. info find.

→ Ссылка