Os colchetes não se expandem entre aspas duplas. Tente isto:
for x in *;
do rm -r "$x/foo/bar/"{a*,b,c,d,g*};
done
Eu escrevi o trecho a seguir para excluir vários subdiretórios seletivamente de um ancestral comum. Não funciona, mas não sei dizer por quê.
for x in *;
do rm -r "$x/foo/bar/{a*,b,c,d,g*}";
done
Eu recebo erros "no such file or directory" quando o executo, mesmo sabendo que as pastas existem.
Tags zsh