2

У меня есть структура каталогов, которая выглядит следующим образом:

processor0/10
processor0/10.1
processor0/10.2
processor1/10
processor1/10.1
processor1/10.2
 ...etc...
processor7/10
processor7/10.1
processor7/10.2

Я хотел бы "найти" все каталоги, которые являются 10.1 или 10.2.

Следующие работы:

$ find . -type d -regextype posix-egrep -regex '\./processor[0-9]*/10\.(1|2)'

но это не так:

$ find . -type d -regextype posix-egrep -regex '\./processor\d*/10\.(1|2)'

Я не уверен почему, так как egrep должен понимать, что \d это цифра. Кто-нибудь может объяснить это?

Это командная строка для 64-битной Ubuntu, в частности (GNU findutils) 4.4.2

С уважением, Мадлен

1 ответ1

1

Это связано с тем, что \d обозначает десятичный символ в регулярных выражениях, совместимых с Perl, который не поддерживается командой find .

Вы можете использовать символ classe [:digit:]:

find . -type d -regextype posix-egrep -regex '\./processor[[:digit:]]*/10\.(1|2)'

Вы также можете обратиться к регулярным выражениям.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .