Entonces el problema es: ¿por qué a_[a-z]*_datacoincide a_clean_0db_data?
Esto se puede dividir en cuatro partes:
a_coincide con el comienzo de a_clean_0db_data, dejando clean_0db_dataque coincida
[a-z]coincide con cualquier personaje en el rango a-z(por ejemplo c), dejando lean_0db_dataque 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 findimplementaciones tienen un -regexpredicado para eso:
find . -maxdepth 1 -regex "^.*/a_[a-z]*_data$"
El -maxdepthes 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