Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux

Як перелічити каталоги в Linux: повний посібник для початківців і системних адміністраторів

Робота в Linux часто нагадує навігацію по величезній бібліотеці. Замість полиць у вас є директорії (папки), а замість книг — файли. Незалежно від того, чи ви досвідчений системний адміністратор, розробник або цікавий новачок, який тільки починає, оволодіння основами навігації файлової системи є обов’язковим. Однією з найважливіших фундаментальних навичок є знання того, як ефективно та точно виводити список директорій.

Цей посібник проведе вас через кожен практичний метод виведення списку директорій в Linux, пояснить сильні та слабкі сторони кожного підходу та покаже вам точно, коли використовувати який інструмент — включаючи скрипти та середовища виробничих серверів.

Чому Перелік Директорій Важливий

На персональному комп’ютері ви можете час від часу переглядати папку "Документи" або "Завантаження" через графічний інтерфейс. На сервері 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 не входити в підкаталоги, а виводити самі записи каталогу.
  • */ — Шаблон glob оболонки, який відповідає всім каталогам (і символічним посиланням на каталоги) у поточній папці.

Список каталогів з детальною інформацією

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 — включаючи ті, що працюють на Виділених серверах — ви також можете використовувати:

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

Найкращі практики для виробничих серверних середовищ

При роботі на живому сервері — чи то обліковий запис Shared Web Hosting або повністю керований VPS — пам’ятайте про ці принципи:

  1. Завжди перевіряйте приховані каталоги під час аудитів безпеки. Каталоги на кшталт .ssh/, .git/, .env/ та .config/ часто містять конфіденційні облікові дані, ключі та файли конфігурації. Використовуйте find з -mindepth 1, щоб переконатися, що вони з’являються у вашому виводі.
  1. Використовуйте find у всіх скриптах, ніколи ls. Аналіз ls виводу — це добре відомий антипаттерн у shell-скриптах. Команда find є детермінованою, незалежною від локалі та елегантно обробляє граничні випадки.
  1. Комбінуйте find з -exec для масових операцій. Наприклад, для отримання списку розмірів каталогів:
   find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;
  1. Використовуйте tree -d -L 2 під час адаптації. Коли ви вперше підключаєтесь через SSH до незнайомого сервера, швидкий tree -d -L 2 з /var/www/ або /home/ дає вам миттєвий огляд структури.
  1. Обережно обмежуйте дозволи. Знання про існування каталогів — це лише частина картини. Регулярно перевіряйте дозволи каталогів за допомогою 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 {} ;

Цей робочий процес займає менше хвилини і дає вам повну картину макета каталогу вашого веб-сервера, дозволів та споживання дискового простору — важливі знання для будь-якого адміністратора, який керує VPS з cPanel або користувацьким стеком Linux.

Висновок

Перелік директорій є однією з найфундаментальніших навичок Linux, однак метод, який ви виберете, має більше значення, ніж думають більшість початківців. Ось резюме ключових висновків:

  • ls -d */ ідеальний для швидких інтерактивних перевірок — але він ігнорує приховані директорії та не придатний для написання скриптів.
  • find . -mindepth 1 -maxdepth 1 -type d є золотим стандартом для надійного, портативного, безпечного для скриптів переліку директорій, який включає приховані записи.
  • tree -d неоцінний для візуалізації складних структур та їх передачі іншим.
  • Уникайте ls -l | grep "^d" — він крихкий, залежить від локалізації та не має переваг над find.

Незалежно від того, керуєте ви конфігураціями в середовищі Dedicated Servers, розгортаєте веб-додатки чи просто вперше досліджуєте нову машину Linux, опанування цих команд заощадить вам час, запобіжить дорогим помилкам та дасть вам впевненість для навігації будь-якою файловою системою з точністю.

Командний рядок — це не перешкода — це суперсила. І все починається з того, щоб точно знати, де ви знаходитесь і що вас оточує.