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 . sources
jest |pipe
jak skrypt powłoki - jest to ten sam proces i nie ma problemów, które można napotkać po execve
wywoł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 .svn
plików jest tak proste, jak zmiana ls
linii na:
ls -t --color=always --hide="*svn" "%p"\n
Lub jeśli chcesz zobaczyć svn
rozszerzenia w każdym folderze, ALE ./svn
moż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 -s
i, jeśli cię to obchodzi, -u
posortuję według czasu dostępu, a nie czasu mod.