Você não está usando expressões regulares aqui, mas padrões de globalização de nomes de arquivo.
O [...]
sempre corresponderá a um único caractere (isso é o mesmo entre os padrões de globalização de nomes de arquivos e expressões regulares), e é por isso que ele não corresponde aos três caracteres cho
( [cho]
significa "um de c
, h
e o
").
Para corresponder a todos os nomes que começam com a.
use a.*
.
Para corresponder todos os nomes que começam com a.
e, em seguida, terminam diretamente em c
, h
, o
ou cho
, defina primeiro a opção extglob
shell com shopt -s extglob
e use% código%.
Uma expansão de chave como a.@([cho]|cho)
geraria os nomes de arquivos na linha de comando, mas não garante que esses arquivos realmente existam.