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

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

Ответы [ 16 ]

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

Попробуйте это ls -d */ для просмотра каталогов в текущем каталоге

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

Попробуйте это:

find . -maxdepth 1 -type d
20 голосов
/ 20 ноября 2013

следующие

find * -maxdepth 0 -type d

в основном фильтрует расширение '*', т.е. все записи в текущем каталоге, по условию -type d.

Преимущество в том, что вывод такой же, как у ls -1 *, но только с каталогами и записи не начинаются с точки

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

Вы можете использовать ls -d */ или tree -d

Другим решением может быть глобализация, но это зависит от используемой вами оболочки и от того, поддерживается ли глобализация для каталогов.

Например, ZSH:

zsh # ls *(/)
10 голосов
/ 23 мая 2014

Поскольку существует множество способов сделать это, вот еще один:

tree -d -L 1 -i --noreport
  • -d: каталоги
  • -L: глубина дерева (отсюда 1, наш рабочий каталог)
  • -i: без отступов, печатаются только имена
  • - noreport: не сообщать информацию в конце списка дерева
8 голосов
/ 05 декабря 2013
ls -l | grep '^d'

Вы можете сделать псевдоним и поместить его в файл профиля

alias ld="ls -l| grep '^d'"
7 голосов
/ 20 мая 2012
find . -maxdepth 1 -type d -name [^\.]\* | sed 's:^\./::'
6 голосов
/ 24 января 2015

Для того, чтобы перечислить каталоги в текущем рабочем каталоге ls -d */ можно использовать. И если вам нужно перечислить скрытые каталоги, используйте эту команду ls -d .*/

5 голосов
/ 26 апреля 2014

используйте это, чтобы получить список каталогов

ls -d */ | sed -e "s/\///g"
5 голосов
/ 08 сентября 2010

Ответ будет зависеть от вашей оболочки .

В zsh, например, вы можете сделать следующее:

echo *(/)

И все каталоги в текущем рабочем каталоге будут отображаться.

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

Альтернативный подход - использовать find(1), который должен работать на большинстве разновидностей Unix:

find . -maxdepth 1 -type d -print  

find(1) имеет много применений, поэтому я определенно рекомендую man find.

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