trova -regex non riconoscendo \ d cifra


2

Ho una struttura di directory simile alla seguente:

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

Vorrei "trovare" tutte le directory che sono 10.1 o 10.2.

Le seguenti opere:

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

ma questo non:

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

Non sono sicuro del perché, poiché egrep dovrebbe capire che \ d è una cifra. Qualcuno può spiegare questo?

Questo è il comando da riga di comando su Ubuntu a 64 bit, in particolare (GNU findutils) 4.4.2

Saluti, Madeleine


Risposte:


2

Questo perché \dindica un carattere decimale nelle espressioni regolari compatibili Perl che non è supportato da find.

Puoi utilizzare la classe personaggio [:digit:]:

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

Puoi anche fare riferimento a espressioni regolari .


Grazie. Capisco. È difficile mantenere tutti i sapori di regex. Vorrei che standardizzassero ...
Madeleine P. Vincent,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.