find $DIR -depth -maxdepth 3 \
 -type d -readable -printf \
 "echo ; echo %p ; echo
 ls -t --color=always %p\n" |\
 . /dev/stdin 2>&- | $PAGER

This avoids any argument list problems because the only argument *`ls`* will ever receive is the name of the directory you want listed. You can do this with anything you like.

The shell just *`. sources`* the *`|pipe`* as a shell script - it's the same process and doesn't have the issues you can encounter when *`execve`* is called.

In any case - the above only goes three-deep which is adjustable by changing *`maxdepth`.* It also deep first - so you work your way backwards to your current directory from *`depth`.* 

You might notice you also get *`$LSCOLORS`* - on my machine it also provides neatly printed columns and everything else you would want from *`ls`* - or, for that matter, anything you can imagine you'd wanna do with *`. source.`*