find -regex não reconhecendo \ d dígito

2

Eu tenho uma estrutura de diretórios que se parece com o seguinte:

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

Gostaria de "encontrar" todos os diretórios 10.1 ou 10.2.

Os seguintes trabalhos:

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

mas isso não acontece:

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

Não sei porque, porque o egrep deve entender que \ d é um dígito. Alguém pode explicar isso?

Esta é a linha de comando encontrada no Ubuntu de 64 bits - especificamente (GNU findutils) 4.4.2

Atenciosamente, Madeleine

    
por Madeleine P. Vincent 05.05.2014 / 17:18

1 resposta

1

Isso ocorre porque \d denota um caractere de dígito decimal em expressões regulares compatíveis com Perl que não é suportado por find .

Você pode usar o caractere classe [:digit:] :

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

Você também pode consultar as expressões regulares .

    
por 05.05.2014 / 18:41