find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n"
ls -t --color=always "%p"\n' |\
. /dev/stdin 2>&-
Це дозволяє уникнути будь-яких проблем зі списком аргументів, оскільки єдиний аргумент lsколи-небудь отримає - це ім'я каталогу, який ви хочете перелічити. Ви можете робити це з усім, що завгодно.
Оболонка просто як сценарій оболонки - це той же процес , і не має проблем , ви можете зіткнутися при виклику.. sources|pipeexecve
У будь-якому випадку - вищесказане йде лише на три глибини, яке регулюється зміною maxdepth. Спершу це також глибоко - тому ви працюєте назад до поточного каталогу depth.
Ви можете помітити, що ви також отримуєте $LSCOLORS- на моїй машині він також містить акуратно надруковані стовпчики та все інше, від чого ви хочете ls- або, з цього приводу, все, що ви можете собі уявити, що хочете зробити з. source.
НІ SVN
Знову ж таки, це зробить все, що ви очікуєте ls. Отож, заховати .svnфайли так само просто, як змінити lsрядок на:
ls -t --color=always --hide="*svn" "%p"\n
Або якщо ви хочете бачити svnрозширення у кожній папці, але ./svnви можете змінити його, щоб вся команда виглядала так:
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>&-
Особисто мені це подобається з ls's, -sі якщо вам все одно, -uбуде сортувати за часом доступу, а не часом моди.