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.