No entanto, outra maneira de alcançar isso é
print *(/)
ou
echo *(/)
Update1
Um bit mais versão correta (como notado por @ Stéphane Chazelas) seria
print -rl -- *(/)
ou
echo -E - *(/)
para cuidar de espaços (-l), seqüências de escape (-r / -E) e hífens principais (- / -) dentro de nomes de arquivos.
Update2
Ainda ainda mais versão correta é print -rN
que adicionalmente cuida de quebras de linha dentro de nomes de arquivos (o linux os permite, o windows não) separando os resultados com nulos, por exemplo:
print -rN -- **/*(/) |xargs -0 -n10 chmod g+s
que recursivamente define o bit setguid - seletivamente endereçando diretórios, ao contrário de chmod -R g+s
.
Update3
Para árvores grandes, isso processa apenas uma parte dos arquivos (devido ao limite do tamanho da linha de comando) e, silenciosamente, deixa o restante como está. Os seguintes comandos podem lidar com esta situação:
find . -type d -print0 |xargs -0 -n10 chmod g+s