Alguns diretórios / arquivos podem conter espaços em seus nomes, isso causaria o erro que você está recebendo. Então use aspas:
for item in *
do
if [ -d "$item" ]
then
echo "$item"
fi
done
se você quiser que eles sejam classificados em ordem alfabética
for item in *
do
if [ -d "$item" ]
then
echo "$item"
fi
done | sort
Como exemplo do problema, suponha que um arquivo seja chamado de My File
. Se você não usa aspas que você obteria (após a expansão do bash)
if [ -d My File ]
então é como "Teste: é My
um diretório? Do File
", mas File
não é um operador test
válido, portanto, o erro.