Sim,
for f in *{b,c}*
é expandido primeiro para:
for f in *b* *c*
E, em seguida, o loop é executado sobre a expansão independente desses dois globs.
O que você quer aqui é um glob. Aqui, *[bc]*
faria, mas para algo mais complexo, em bash
, você precisaria ativar globs estendidos semelhantes a ksh. Você provavelmente também desejará a opção nullglob:
shopt -s nullglob extglob
for f in *@(b|c)*; do...
Em zsh
:
for f in *(b|c)*(N); do
O (N)
sendo para um per-glob nullglob
.
Em ksh93
:
for f in ~(N)*@(b|c)*; do