find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n"
ls -t --color=always "%p"\n' |\
. /dev/stdin 2>&-
Pozwala to uniknąć problemów z listą argumentów, ponieważ jedynym argumentem ls, jaki kiedykolwiek otrzymasz, jest nazwa katalogu, który chcesz wyświetlić. Możesz to zrobić ze wszystkim, co chcesz.
Powłoka . sourcesjest |pipejak skrypt powłoki - jest to ten sam proces i nie ma problemów, które można napotkać po execvewywołaniu.
W każdym razie - powyższe idzie tylko na trzy głębokości, które można regulować poprzez zmianę maxdepth. Najpierw również głęboko - dzięki temu możesz cofnąć się do bieżącego katalogu depth.
Możesz zauważyć, że dostajesz $LSCOLORS- na mojej maszynie zapewnia również starannie wydrukowane kolumny i wszystko, czego chciałbyś od ls- lub, jeśli o to chodzi, wszystko, co możesz sobie wyobrazić, z czym chciałbyś zrobić. source.
NIE SVN
Znowu zrobi wszystko, czego można oczekiwać ls. Dlatego ukrywanie .svnplików jest tak proste, jak zmiana lslinii na:
ls -t --color=always --hide="*svn" "%p"\n
Lub jeśli chcesz zobaczyć svnrozszerzenia w każdym folderze, ALE ./svnmożesz to zmienić, aby całe polecenie wyglądało tak:
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>&-
Osobiście podoba mi się to z ls -si, jeśli cię to obchodzi, -uposortuję według czasu dostępu, a nie czasu mod.