Quando cp
recebe mais de dois argumentos, o último é considerado o diretório de destino e os outros os arquivos a serem copiados.
cp
não sabe que você usou um curinga: os curingas são expandidos pelo shell antes que o comando os veja. Portanto, mesmo que cp
tivesse algum tipo de recurso de múltiplos destinos, não poderia usar essa sintaxe.
Você precisaria de um loop. Em conchas semelhantes a Bourne:
(ret=0
for dir in myfolder*/constant/; do
cp foo.txt "$dir" || ret=$?
done
exit "$ret")
A $ret
business é para relatar qualquer falha cp
no status de saída no final.