O problema é que o shell executará a expansão de chaveta (que processa {...,...}
) antes de fazer a substituição de comando (a $(...)
part.) Então, depois que seu seq
for expandido, o shell não reavaliará o {01,02}
e vai deixar como literal.
Você precisa adicionar um eval
para reavaliar a expressão após a substituição do comando:
$ eval "ls test/*{$(seq -s , -f "%02g" 1 2)}*"
Nesse caso, a substituição do comando será executada primeiro, resultando em uma string ls test/*{01,02}*
e o eval
solicitará que o shell interprete isso como um comando, que executará a expansão de chave e glob, resultando em a lista de arquivos que você está esperando.