Ele não funciona porque */ e .*/ não são argumentos que são passados diretamente para ls - em vez disso, eles são globs que são expandidos pelo shell, fornecendo uma lista de nomes de arquivos correspondentes no diretório atual que são passados para ls
O equivalente para um diretório diferente ( /etc say) seria
ls -d /etc/*/ /etc/.*/
Se o seu shell suporta a expansão de contraventamento, você pode escrever isso de forma mais compacta como
ls -d /etc/{,.}*/