Entonces el problema es: ¿por qué a_[a-z]*_data
coincide a_clean_0db_data
?
Esto se puede dividir en cuatro partes:
a_
coincide con el comienzo de a_clean_0db_data
, dejando clean_0db_data
que coincida
[a-z]
coincide con cualquier personaje en el rango a-z
(por ejemplo c
), dejando lean_0db_data
que coincida
*
coincide con cualquier número de caracteres, p. ej. lean_0db
_data
coincide con el final _data
En las expresiones regulares, [a-z]*
significaría cualquier número de caracteres (incluido cero) en el rango de a..z , pero se trata de un bloqueo de shell, no de expresiones regulares.
Si desea expresiones regulares, algunas find
implementaciones tienen un -regex
predicado para eso:
find . -maxdepth 1 -regex "^.*/a_[a-z]*_data$"
El -maxdepth
es aquí sólo para limitar los resultados de búsqueda-a la carpeta que se encuentra. La expresión regular coincide con la totalidad de nombre de archivo, por lo tanto, he añadido una ^.*/
para que coincida con la parte de ruta