La expresión de llave no funciona en buscar expresiones regulares

La expresión de llave no funciona en buscar expresiones regulares

Tengo dos carpetas CA01y , CA02en la carpeta actual foo,:

foo -+
     |
     +-CA01
     |
     +-CA02

cuando escribo

find . -regex ".*CA[0-9]+" -exec echo {} +

O

find . -regex ".*CA[0-9][0-9]" -exec echo {} +

Tengo el siguiente resultado, que se esperaba:

./CA01 ./CA02

Pero cuando escribo

find . -regex ".*CA[0-9]\{2\}" -exec echo {} +

No aparece nada, lo cual es bastante inesperado.

Porque, de forma predeterminada, findutiliza expresiones regulares de emacs. Podría usar todo lo anterior para hacer coincidir las dos carpetas.

¿Me estoy perdiendo de algo?

Respuesta1

Debe cambiarlo -regextypepor uno que admita recuentos de repeticiones (es decir, {2}). El predeterminado emacsno parece admitir los recuentos. El tipo de expresión regular predeterminado imita una versión anterior de Emacs que no tenía una sintaxis para el recuento de repeticiones. Los tipos siguientes parecen funcionar para mí.

Ejemplos

posix-egrep

$ find foo -regextype posix-egrep -regex ".*CA[0-9]{2}" -exec echo {} +
foo/CA02 foo/CA01

sed

$ find foo -regextype sed -regex ".*CA[0-9]\{2\}" -exec echo {} +
foo/CA02 foo/CA01

posix extendido

$ find foo -regextype posix-extended -regex ".*CA[0-9]{2}" -exec echo {} +
foo/CA02 foo/CA01

Hay otros pero no intenté más. Vea la findpágina de manual y busque -regextype.

extracto

-regextype type
       Changes  the  regular  expression  syntax  understood by -regex and 
       -iregex tests which occur later on the command line.  Currently
       implemented types are emacs (this is the default), posix-awk, 
       posix-basic, posix-egrep and posix-extended.

Mi versión de encontrar

$ find -version
find (GNU findutils) 4.5.9
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Built using GNU gnulib version 1778ee9e7d0e150a37db66a0e51c1a56755aab4f
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2) 

información relacionada