Як перелічити каталоги в Linux: повний посібник для початківців і системних адміністраторів
Робота в Linux часто нагадує навігацію по величезній бібліотеці. Замість полиць у вас є директорії (папки), а замість книг — файли. Незалежно від того, чи ви досвідчений системний адміністратор, розробник або цікавий новачок, який тільки починає, оволодіння основами навігації файлової системи є обов’язковим. Однією з найважливіших базових навичок є знання того, як ефективно та точно перелічувати директорії.
Цей посібник проведе вас через кожен практичний метод перелічування директорій у Linux, пояснить сильні та слабкі сторони кожного підходу та покаже вам, коли саме використовувати той чи інший інструмент — включаючи скрипти та середовища виробничих серверів.
Чому перелічування директорій важливо
На персональному комп’ютері ви можете час від часу переглядати папку “Документи” або “Завантаження” через графічний інтерфейс. На сервері Linux, однак, директорії знаходяться в центрі майже кожного адміністративного завдання, яке ви виконуватимете:
- Системне адміністрування: Швидко перевірте, що знаходиться в /etc, /var або /home.
- Веб-хостинг: Знайдіть та керуйте папками проектів під /var/www або /home/user/public_html.
- Розробка програмного забезпечення: Визначте директорії контролю версій та середовища, такі як .git або .venv.
- Аудит безпеки: Підтвердіть точно, що встановлено, налаштовано та запущено в системі.
- Автоматизація та скрипти: Надійно перелічуйте директорії для використання в shell-скриптах та завданнях cron.
Якщо ви не можете ефективно перелічувати директорії, ви завжди відчуватимете дезорієнтацію — особливо у віддаленому середовищі VPS Hosting, де немає графічного менеджера файлів, на який можна покластися.
Метод 1: Команда ls — швидко та просто
Команда ls є стандартним інструментом для відображення вмісту директорії. Це перша команда, яку вивчає більшість користувачів Linux, і з поважної причини: вона швидка, зручна для читання та доступна в кожній Unix-подібній системі.
Базове використання
lsЦе перелічує всі приховані файли та директорії в поточній робочій директорії.
Перелічити лише директорії
ls -d */Ось що робить кожна частина:
- -d — Говорить ls не спускатися в піддиректорії, а перелічувати самі записи директорії.
- */ — Шаблон глобу shell, який відповідає всім директоріям (та символічним посиланням на директорії) в поточній папці.
Перелічити директорії з детальною інформацією
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 */: Швидкі інтерактивні перевірки, де вам потрібні лише видимі директорії та не потрібна надійність скриптів.
Метод 2: Команда find — потужна та надійна
Команда find є вибором професіонала для перелічування директорій. На відміну від ls, вона розроблена для програмного використання, підтримує рекурсивний обхід, включає приховані директорії за замовчуванням та поводиться послідовно в різних дистрибутивах Linux та локалях.
Перелічити всі директорії рекурсивно
find . -type d- . — Почніть з поточної директорії.
- -type d — Відповідайте лише записам директорії (не файлам, символічним посиланням або іншим типам).
Це рекурсивно перелічить кожну директорію на кожному рівні глибини під вашою поточною локацією.
Перелічити лише директорії верхнього рівня (портативний метод)
find . -mindepth 1 -maxdepth 1 -type d- -not -path ‘.’ — Виключає саму поточну директорію (.) з результатів.
- -prune — Запобігає рекурсії за межами безпосередніх дітей.
Це найпортативніший та найнадійніший спосіб перелічити лише прямі піддиректорії поточної папки, і він працює однаково на GNU/Linux, macOS та BSD системах.
Альтернатива для GNU/Linux систем
На більшості сучасних дистрибутивів Linux — включаючи ті, що працюють на Dedicated Servers — ви також можете використовувати:
find . -maxdepth 1 -type dЗверніть увагу, що це включить . саме в вихід. Використовуйте -not -path ‘.’ разом з -prune, щоб чисто його виключити.
Включити приховані директорії
Оскільки 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 treeCentOS/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 | grep
Ви час від часу зустрічатимете цей шаблон, запропонований в Інтернеті:
ls -l | grep "^d"Ідея полягає у фільтруванні виводу довгого перелічення ls, щоб показати лише рядки, які починаються з d — що вказує на директорію. Хоча це виглядає розумно, це принципово крихке і повинно бути уникнено в будь-якому серйозному контексті:
| Проблема | Пояснення |
|---|---|
| Чутливість до локалі | Деякі локалі або конфігурації терміналу змінюють формат виводу ls, порушуючи шаблон ^d. |
| Коди кольорів | Якщо ls виводить коди виходу ANSI для кольорів, шаблон ^d може не відповідати. |
| Приховані директорії | Не показуються, як і з ls */. |
| Символічні посилання | Символічні посилання, що вказують на директорії, показуються як l, а не d, тому вони мовчки виключаються. |
| Ненадійність скриптів | Аналіз виводу ls у скриптах явно не рекомендується в найкращих практиках shell-скриптів. |
Замість цього використовуйте find. Вона розроблена для цього завдання та уникає всіх вищезазначених підводних каменів.
Швидкий довідник: вибір правильного методу
| Мета | Найкраща команда |
|---|---|
| Швидка інтерактивна перевірка (лише видимі директорії) | ls */ |
| Детальне перелічення з дозволами | ls -ld */ |
| Директорії верхнього рівня включаючи приховані | find . -maxdepth 1 -type d |
| Всі директорії рекурсивно | find . -type d |
| Структура візуального дерева | tree -d |
| Використання в shell-скрипті | find . -type d |
Найкращі практики для середовищ виробничих серверів
Коли ви працюєте на живому сервері — чи то на рахунку Shared Web Hosting, чи на повністю керованому VPS — пам’ятайте про ці принципи:
- Завжди перевіряйте приховані директорії під час аудитів безпеки. Директорії на кшталт .ssh, .gnupg, .aws та .env часто містять чутливі облікові дані, ключі та файли конфігурації. Використовуйте find з -type d, щоб переконатися, що вони з’являються у вашому виводі.
- Використовуйте find у всіх скриптах, ніколи ls. Аналіз виводу ls є добре відомим антипатерном у shell-скриптах. Команда find є детермінованою, незалежною від локалі та витримує граничні випадки з граціозністю.
- Комбінуйте find з du для масових операцій. Наприклад, для перелічення розмірів директорій:
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;- Використовуйте tree при адаптації. Коли ви вперше SSH в незнайомий сервер, швидкий tree -L 2 з /var/www або /home дає вам миттєвий огляд структури.
- Обережно обмежуйте дозволи. Знання того, які директорії існують, — це лише частина картини. Регулярно перевіряйте дозволи директорій за допомогою ls -ld, щоб виловити неправильно налаштовані світові записувані директорії.
Практичний приклад: аудит директорії веб-сервера
Припустимо, ви щойно розгорнули новий додаток на Linux VPS. Ось практичний робочий процес, який поєднує команди, розглянуті в цьому посібнику:
# Navigate to the web root
cd /var/www/
# Quick visual check of top-level directories
ls -ld */
# Full audit including hidden directories
find . -mindepth 1 -maxdepth 1 -type d
# Visual map of the project structure (2 levels deep)
tree -d -L 2
# Check disk usage per directory
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;