it-swarm-ru.tech

Есть ли опция с командой 'ls', чтобы я видел только каталоги?

Иногда мне нужно проверять только каталоги, а не файлы. Есть ли опция с командой ls? Или есть какая-нибудь полезность для этого?

EDIT : я использую Mac OS X и ls -d дает мне . хотя у меня есть каталоги.

86
prosseek

Я знаю, что уже есть выбранный ответ, но вы можете получить запрошенное поведение, просто ls:

ls -ld -- */

(Обратите внимание, что "-" отмечает конец параметров, предотвращая интерпретацию имен папок, начинающихся с дефиса, как дополнительных параметров команды.)

В этом списке будут перечислены все не скрытые (если вы не сконфигурируете глобусы Shell для их расширения) каталоги в текущем рабочем каталоге, в котором он запущен (обратите внимание, что он также включает символические ссылки на каталоги). Чтобы получить все подкаталоги какой-либо другой папки, просто попробуйте:

ls -ld /path/to/directory/*/

Обратите внимание, что -l является необязательным.

96
Steven D

Нет, но простая команда find сделает это:

find . -type d -depth 1

или grep

ls -F | grep /

Вы можете затем псевдоним любой из них, если это необходимо.

16
gvkv

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

ls -d -- */ .*/

(в зависимости от оболочки, это может также включать . а также ..)

7
Neil Chandler

Мне нравится утилита tree , чтобы получить обзор структуры каталогов. Он доступен в MacPorts и во всех дистрибутивах Linux, которые я пробовал.

tree -d -L 2

Это показало бы все каталоги, два уровня глубоко.

7
Claes Mogren

С zsh (как было найдено по умолчанию в macOS, раньше даже было /bin/sh там), вы бы использовали квалификаторы glob для выбора файлов в зависимости от их типа:

  • Список не скрытых каталогов:

    ls -d -- *(/)
    
  • Список всех каталогов:

    ls -d -- *(D/)
    

    (. а также .. всегда исключены, добавляйте их по отдельности, если хотите)

  • Также добавьте символические ссылки на каталоги:

    ls -d -- *(D-/)
    

    (- заставляет применять дополнительные квалификаторы после разрешения символической ссылки).

3
Stéphane Chazelas

Существует не только один вариант для просмотра каталогов ...

Но вы можете использовать -d (список каталогов, а не их содержимое) и */ для сопоставления самих каталогов:

ls -d */

И попробуйте использовать точку, для скрытых, ls -d .*/.

Просто для удовольствия, попробуйте: ls -d а также ls */. Различия будут понятны!

Ref:

0
marcio