Então o problema é: por que a_[a-z]*_data combina a_clean_0db_data?
Isso pode ser dividido em quatro partes:
a_coincide com o início de a_clean_0db_data, deixando clean_0db_datapara ser correspondido
[a-z]corresponde a qualquer caractere no intervalo a-z(por exemplo c), deixando lean_0db_dataa correspondência
* corresponde a qualquer número de caracteres, por exemplo lean_0db
_data corresponde ao final _data
Em expressões regulares, [a-z]*significaria qualquer número de caracteres (incluindo zero) no intervalo de a..z , mas você está lidando com globbing de shell, não com expressões regulares.
Se você deseja expressões regulares, algumas findimplementações têm um -regexpredicado para isso:
find . -maxdepth 1 -regex "^.*/a_[a-z]*_data$"
O -maxdepthé aqui apenas para limitar os de resultados de pesquisa para a pasta em que está. A expressão regular corresponde a toda filename, portanto, eu adicionei um ^.*/para corresponder ao caminho-parte