15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
02.09.2025

Как перечислить директории в Linux: полное руководство для начинающих и системных администраторов

Работа в Linux часто напоминает навигацию по огромной библиотеке. Вместо полок у вас есть директории (папки), а вместо книг — файлы. Независимо от того, являетесь ли вы опытным системным администратором, разработчиком или любопытным новичком, только начинающим работу, овладение основами навигации по файловой системе является обязательным. Один из наиболее критических фундаментальных навыков — знание того, как эффективно и точно выводить список директорий.

Это руководство проведет вас через все практические методы вывода списка директорий в Linux, объяснит сильные и слабые стороны каждого подхода и покажет вам точно, когда использовать какой инструмент — включая использование в скриптах и production-окружениях серверов.

Почему вывод списка директорий имеет значение

На персональном компьютере вы можете время от времени просматривать папку “Документы” или “Загрузки” через графический интерфейс. На Linux-сервере же директории находятся в центре почти каждой административной задачи, которую вы будете выполнять:

  • Системное администрирование: Быстро проверьте, что находится в /etc/, /var/log/ или /usr/local/bin/.
  • Веб-хостинг: Найдите и управляйте папками проектов в /var/www/ или /home/.
  • Разработка программного обеспечения: Определите директории контроля версий и окружения, такие как .git/ или .venv/.
  • Аудит безопасности: Подтвердите точно, что установлено, настроено и запущено в системе.
  • Автоматизация и скриптинг: Надежно перечислите директории для использования в shell-скриптах и cron-заданиях.

Если вы не можете эффективно выводить список директорий, вы всегда будете чувствовать себя дезориентированным — особенно в удаленной среде VPS Hosting, где нет графического файлового менеджера, на который можно было бы положиться.

Метод 1: Команда ls — быстро и просто

Команда ls — это инструмент по умолчанию для отображения содержимого директории. Это первая команда, которую изучает большинство пользователей Linux, и не без причины: она быстрая, удобочитаемая и доступна в каждой Unix-подобной системе.

Базовое использование

ls

Это выводит список всех скрытых файлов и директорий в текущей рабочей директории.

Вывести список только директорий

ls -d */

Вот что делает каждая часть:

  • -d — Указывает ls не спускаться в поддиректории, а выводить сами записи директории.
  • */ — Шаблон глоба оболочки, который соответствует всем директориям (и символическим ссылкам на директории) в текущей папке.

Вывести список директорий с подробной информацией

ls -ld */

Добавление -l дает вам формат длинного списка, который включает:

  • Разрешения файлов
  • Количество жестких ссылок
  • Владельца и группу
  • Размер файла
  • Временную метку последнего изменения

Пример вывода:

drwxr-xr-x 3 root root 4096 Jun 10 14:22 backups/
drwxr-xr-x 5 www-data www-data 4096 Jun 12 09:15 html/
drwxr-xr-x 2 deploy deploy 4096 Jun 11 18:03 logs/

Ограничение: скрытые директории исключены

Глоб */ не соответствует скрытым директориям — тем, имена которых начинаются с точки (.), таким как .git/, .ssh/ или .config/. Это важное предостережение, особенно в средах, чувствительных к безопасности.

Когда использовать ls -d */: Быстрые интерактивные проверки, когда вам нужны только видимые директории и вам не требуется надежность скриптинга.

Метод 2: Команда find — мощная и надежная

Команда find — это выбор профессионала для перечисления директорий. В отличие от ls, она предназначена для программного использования, поддерживает рекурсивный обход, включает скрытые директории по умолчанию и ведет себя последовательно на разных дистрибутивах Linux и локалях.

Вывести список всех директорий рекурсивно

find . -type d
  • . — Начните с текущей директории.
  • -type d — Соответствует только записям директорий (не файлам, символическим ссылкам или другим типам).

Это рекурсивно выведет список каждой директории на каждом уровне глубины под вашим текущим местоположением.

Вывести список только директорий верхнего уровня (портативный метод)

find . -mindepth 1 -maxdepth 1 -type d
  • -mindepth 1 — Исключает саму текущую директорию (.) из результатов.
  • -maxdepth 1 — Предотвращает рекурсию за пределы непосредственных потомков.

Это наиболее портативный и надежный способ вывести список только прямых поддиректорий текущей папки, и он работает одинаково на системах GNU/Linux, macOS и BSD.

Альтернатива для систем GNU/Linux

На большинстве современных дистрибутивов Linux — включая те, которые работают на Dedicated Servers — вы также можете использовать:

find . -maxdepth 1 -type d

Обратите внимание, что это включит . в вывод. Используйте -mindepth 1 вместе с -maxdepth 1 для его чистого исключения.

Включить скрытые директории

Поскольку find не полагается на shell-глобы, она автоматически включает скрытые директории:

find . -mindepth 1 -maxdepth 1 -type d

Это покажет .git/, .ssh/, .config/ и любые другие директории с префиксом точки вместе с видимыми.

Использовать find в скриптах

find — это правильный инструмент для shell-скриптинга, потому что:

  • Она безопасно обрабатывает имена файлов с пробелами и специальными символами.
  • На нее не влияют параметры локали или конфигурации цветов терминала.
  • Она производит последовательный, анализируемый вывод.

Пример: цикл по всем директориям верхнего уровня

find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
    echo "Processing: $dir"
done

Когда использовать find: Всякий раз, когда вам нужны включенные скрытые директории, рекурсивные результаты или надежный вывод для скриптинга и автоматизации.

Метод 3: Команда tree — визуальные карты директорий

Команда tree отображает визуальную иерархическую карту структуры вашей директории. Она не установлена по умолчанию на всех дистрибутивах, но чрезвычайно полезна для документации, адаптации и понимания сложных макетов проектов.

Установить tree

Debian/Ubuntu:

sudo apt install tree

CentOS/RHEL/AlmaLinux:

sudo yum install tree

Вывести список только директорий (без файлов)

tree -d

Ограничить глубину, чтобы избежать перегруженного вывода

tree -d -L 2
  • -d — Показать только директории.
  • -L 2 — Ограничить отображение 2 уровнями глубины.

Пример вывода:

.
├── backups
│   └── daily
├── html
│   ├── assets
│   └── uploads
└── logs

Включить скрытые директории

tree -d -a

Когда использовать tree: Визуализация структур проектов, написание документации или изучение незнакомого макета сервера в первый раз.

Метод 4: Почему вам следует избегать ls -l | grep "^d"

Вы иногда встретите этот паттерн, предлагаемый в Интернете:

ls -l | grep "^d"

Идея состоит в том, чтобы отфильтровать вывод длинного списка ls для отображения только строк, начинающихся с d — что указывает на директорию. Хотя это выглядит умно, это принципиально хрупко и должно быть избегнуто в любом серьезном контексте:

ПроблемаОбъяснение
Чувствительность к локалиНекоторые локали или конфигурации терминала изменяют формат вывода ls -l, нарушая паттерн grep.
Коды цветовЕсли ls выводит коды экранирования ANSI для цветов, паттерн ^d может не совпадать.
Скрытые директорииНе показаны, как и с ls -d */.
Символические ссылкиСимволические ссылки, указывающие на директории, показываются как l, а не d, поэтому они молча исключаются.
Ненадежность скриптингаАнализ вывода ls в скриптах явно не рекомендуется в лучших практиках shell-скриптинга.

Используйте find вместо этого. Она специально разработана для этой задачи и избегает всех вышеперечисленных проблем.

Краткая справка: выбор правильного метода

ЦельЛучшая команда
Быстрая интерактивная проверка (только видимые директории)ls -d */
Подробный список с разрешениямиls -ld */
Директории верхнего уровня, включая скрытыеfind . -mindepth 1 -maxdepth 1 -type d
Все директории рекурсивноfind . -type d
Визуальная структура дереваtree -d
Использование в shell-скриптеfind . -mindepth 1 -maxdepth 1 -type d

Лучшие практики для production-окружений серверов

При работе на live-сервере — будь то учетная запись Shared Web Hosting или полностью управляемый VPS — помните об этих принципах:

  1. Всегда проверяйте скрытые директории при аудите безопасности. Директории, такие как .ssh/, .git/, .env/ и .config/, часто содержат чувствительные учет
15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать