find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n"
ls -t --color=always "%p"\n' |\
. /dev/stdin 2>&-
Это позволяет избежать проблем со списком аргументов, поскольку единственный аргумент, ls
который когда-либо получит, - это имя каталога, который вы хотите перечислить. Вы можете сделать это с чем угодно.
Оболочка просто как сценарий оболочки - это тот же процесс , и не имеет проблем , вы можете столкнуться при вызове.. sources
|pipe
execve
В любом случае - вышеперечисленное идет только на три глубины, которые можно изменить, изменив 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
будет сортировать по времени доступа, а не по времени мода.