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.
НЕТ СВН
Опять же, это будет делать все, что вы ожидаете 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и, если хотите, -uбудет сортировать по времени доступа, а не по времени мода.