Com GNU ls (a opção -U para informar ls para não classificar a lista de arquivos é uma extensão GNU):
ls -lUd -- *(/) .*(/) .*(^/)
O problema é que, se algum desses globs não corresponder, o comando será cancelado, então você pode fazer:
myls() (
setopt cshnullglob
ls -lUd -- *(/) .*(/) .*(^/)
)
Que emula o comportamento csh , pelo qual as globs sem correspondência se expandem para nada, desde que haja pelo menos uma glob que se expanda para algo no comando.
Observe que zsh globs nunca expande . e .. , então esses dois nunca serão incluídos.