Есть ли какая-либо опция с 'ls', управляют, чтобы я видел только каталоги?

Выбранный ответ объясняет это вполне исчерпывающе, но необходимо было бы смотреть целый документальный фильм для знания всех подробностей между разработкой начальной буквы UNIX, и как Linux вышел.

Сначала необходимо полагать, что Linux является ядром, которое было сделано linus и другими программистами. Он принял решение выпустить его с GPL, который к этому времени был лицензией, сделанной FSF, (RMS и другие люди), кто также разрабатывал их собственное ядро и GNU.

Что мы обычно называем, Linux является, сначала, ядром, плюс все другие инструменты, первоначально прибывающие из проекта GNU. Тот проект двух исторически отличается, потому что в то время, от ядра от людей FSF отказались для одобрения ядра Linux, которое было намного лучше.

Я помню, что существует документальный фильм, необходимо действительно наблюдать его, я нахожу это важным для культуры программирования.

Другой вещью, которую необходимо рассмотреть при размышлении о "*nix", является также everying вовлечение POSIX и другого стандартизированного архитектурой материала. Это - предмет дизайна/исследования ОС, но это определяет точно, как включенные работы Ose, и крайне важны, когда у Вас есть ядро, работающее хорошо с его инструментами.

81
21.05.2011, 11:01
11 ответов

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

ls -ld -- */

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

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

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

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

93
27.01.2020, 19:30
  • 1
    Хороший. Я никогда не полагал, что каталоги имеют неявное / на конце - но теперь, когда я вижу, Вы ответить это имеет смысл. В конце концов, заполнение клавишей Tab всегда добавляет его. –  gvkv 06.09.2010, 06:46
  • 2
    клона -d for dir, -l for long format. из чего цель -- ? –  Dineshkumar 17.04.2015, 18:03
  • 3
    , В то время как это выглядит коротким и работает на большинство случаев, нельзя хотеть использовать этот подход, когда истинный каталог необходим, не символьная ссылка каталога. Так find на самом деле хороший выбор в этом случае. Пробелы –  biocyberman 31.01.2017, 22:59
  • 4
    find также имеет преимущество, когда количество каталогов превышает длину аргумента maximum. –  Steven D 01.02.2017, 11:31
  • 5
    Работая назад, я просто понял, что можно просто проигнорировать что-либо с расширением: ls -alhF --ignore=*.*. Не уверенный, как хорошо это обработало бы 'скрытые' папки, т.е. .myHiddenFolder –  Timmah 01.11.2017, 02:46

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

find . -type d -depth 1

или grep

ls -F | grep /

Вы могли затем исказить любой при необходимости.

16
27.01.2020, 19:30
  • 1
    На Ubuntu 14.04 это было -maxdepth 1. Также find требуемый меня для инвертирования порядка: find . -maxdepth 1 -type d –  Brad Cupit 28.08.2015, 17:33
  • 2
    Это ls -F | grep / решение творит чудеса! Это, кажется, единственное, которое я могу взяться за работу над своей машиной FreeBSD. Я думаю с помощью средств Рыбы что что-либо с */ может не работать? –  cjm 27.07.2016, 07:38
  • 3
    я никогда не работал с Рыбой, таким образом, я не уверен в этом, но-F опции, может творить чудеса. –  gvkv 27.07.2016, 16:21

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

tree -d -L 2

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

7
27.01.2020, 19:30

Я думаю, что ls имеет ошибку на Mac OS X. Обходное решение должно использовать grep... ls -l / | grep "^d"

-2
27.01.2020, 19:30
  • 1
    Хорошо знать, что я не единственный человек, который использует grep "^d" взлом –  Michael Mrozek♦ 06.09.2010, 05:10
  • 2
    Насколько я знаю, поведение, которое он описывает, не является ошибкой и является тем же, если Вы используете GNU ls.-d опция отображает список для каталога а не содержания. Для наблюдения, почему это может быть полезно, посмотрите различие между: ls -l /home и ls -dl /home –  Steven D 06.09.2010, 05:11
  • 3
    не являются особенными для оболочки. Можно просто использовать ls -l / | grep ^d. Если Вы собираетесь использовать кавычки, так как Вам не нужно расширение параметра, сделайте их одинарными кавычками. ls -l / | grep '^d'. Да, я - педант. Но действительно, сделайте это. :) –  Wildcard 01.11.2016, 03:08

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

ls -d -- */ .*/

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

7
27.01.2020, 19:30
ls -G

это покажет ваши каталоги синим цветом

-3
20.08.2021, 13:40
$ ls -p | grep /

Флаг -p заставит ls добавить косую черту (`/ ') после каждого имени файла, если это файл - это каталог.

-1
20.08.2021, 13:40

Самый простой способ — ввести следующую команду. Это работает на большинстве платформ и версий UNIX и Linux. Вы можете пропустить -F, если хотите, но это аргумент, который добавляет / в конец имени каталога. Аргумент -Cзахватывает только имена каталогов -все они в текущем каталоге. Если вы хотите видеть только каталоги и подкаталоги в текущем пути, просто добавьте аргумент -R(ls -CFR).

# ls -CF
/dir1  /dir2  /dir3  /beaches  /Work  /Other 
-3
20.08.2021, 13:40

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

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

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

    ls -d -- *(D/)
    

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

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

    ls -d -- *(D-/)
    

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

3
20.08.2021, 13:40

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

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

ls -d */

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

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

Ссылка:

-1
20.08.2021, 13:40

Используйте команду ls следующим образом

❯ ls -1d plugins/*/
plugins/localizable/
plugins/redmine_agile/
plugins/redmine_gitlab_hook/
plugins/redmine_mermaid_macro/
plugins/redmine_open_links_in_new_window/
0
20.08.2021, 13:40

Теги

Похожие вопросы