Список только каталогов в UNIX - PullRequest
206 голосов
/ 08 сентября 2010

Я хочу перечислить только каталоги по указанному пути (ls не имеет такой опции). Кроме того, это можно сделать с помощью однострочной команды?

Ответы [ 16 ]

4 голосов
/ 21 декабря 2012

Для этого можно использовать команду tree с ее переключателем d.

% tree -d tstdir
tstdir
|-- d1
|   `-- d11
|       `-- d111
`-- d2
    `-- d21
        `-- d211

6 directories

см. man tree для получения дополнительной информации.

4 голосов
/ 08 сентября 2010

find specifiedpath -type d

Если вы не хотите выполнять поиск в подкаталогах, вы можете сделать это вместо этого:

find specifiedpath -type d -mindepth 1 -maxdepth 1

Обратите внимание, что каталоги "точка"(имя которого начинается с .) будет также указано в списке;но не специальные каталоги . и ...Если вам не нужны «точечные» каталоги, вы можете просто grep их извлечь:

find specifiedpath -type d -mindepth 1 -maxdepth 1 | grep -v '^\.'

2 голосов
/ 17 сентября 2017
### If you need full path of dir and list selective dir with "name" of dir(or dir_prefix*):
find $(pwd) -maxdepth 1 -type d -name "SL*"
2 голосов
/ 23 августа 2014

Если у меня есть этот каталог:

ls -l

lrwxrwxrwx  1 nagios nagios     11 août   2 18:46 conf_nagios -> /etc/icinga
-rw-------  1 nagios nagios 724930 août  15 21:00 dead.letter
-rw-r--r--  1 nagios nagios  12312 août  23 00:13 icinga.log
-rw-r--r--  1 nagios nagios   8323 août  23 00:12 icinga.log.gz
drwxr-xr-x  2 nagios nagios   4096 août  23 16:36 tmp

Чтобы получить все каталоги, используйте -L для разрешения ссылок:

ls -lL | grep '^d'

drwxr-xr-x 5 nagios nagios   4096 août  15 21:22 conf_nagios
drwxr-xr-x 2 nagios nagios   4096 août  23 16:41 tmp

Без -L:

ls -l | grep '^d'

drwxr-xr-x 2 nagios nagios   4096 août  23 16:41 tmp

conf_nagios каталог отсутствует.

1 голос
/ 08 ноября 2018

Вот еще одно решение, которое показывает связанные каталоги.Я немного предпочитаю это, потому что это подмножество "нормального" вывода ls -l:

ls -1d */ | rev | cut -c2- | rev | xargs ls -ld --color=always
1 голос
/ 20 августа 2015

Это работает для меня:

`ls -F | grep /`

(Но я перехожу на echo */, как упоминалось @nos)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...