find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n"
ls -t --color=always "%p"\n' |\
. /dev/stdin 2>&-
Esto evita cualquier problema en la lista de argumentos porque el único argumento ls
que recibirá será el nombre del directorio que desea enumerar. Puedes hacer esto con lo que quieras.
La cáscara simplemente . sources
el |pipe
como script de shell - es el mismo proceso y no tiene los problemas que puede encontrar cuando execve
se llama.
En cualquier caso, lo anterior solo tiene tres profundidades, que se puede ajustar cambiando maxdepth
. También es profundo primero, por lo que puede avanzar hacia su directorio actual desde depth
.
Es posible que note que también obtiene $LSCOLORS
: en mi máquina, también proporciona columnas bien impresas y todo lo que desea de ls
, o, de hecho, cualquier cosa que pueda imaginar que querría hacer con. source.
NO SVN
De nuevo, esto hará todo lo que esperas ls
. Entonces, ocultar .svn
archivos es tan simple como cambiar la ls
línea a:
ls -t --color=always --hide="*svn" "%p"\n
O si desea ver svn
extensiones en cada carpeta PERO ./svn
podría cambiarla para que todo el comando se vea así:
find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n" ; hide=
[ "%p" = "./svn" ] && hide="*svn"
ls -t --color=always --hide="$hide" "%p"\n' |\
. /dev/stdin 2>&-
Personalmente, me gusta con ls -s
y, si te importa, -u
lo ordenaré por tiempo de acceso en lugar de tiempo de modificación.