Як перелічити каталоги в 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 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 -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 — пам’ятайте про ці принципи:
- Завжди перевіряйте приховані каталоги під час аудитів безпеки. Каталоги на кшталт
.ssh/,.git/,.env/та.config/часто містять конфіденційні облікові дані, ключі та файли конфігурації. Використовуйтеfindз-mindepth 1, щоб переконатися, що вони з’являються у вашому виводі.
- Використовуйте
findу всіх скриптах, ніколиls. Аналізlsвиводу — це добре відомий антипаттерн у shell-скриптах. Командаfindє детермінованою, незалежною від локалі та елегантно обробляє граничні випадки.
- Комбінуйте
findз-execдля масових операцій. Наприклад, для отримання списку розмірів каталогів:
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;- Використовуйте
tree -d -L 2під час адаптації. Коли ви вперше підключаєтесь через SSH до незнайомого сервера, швидкийtree -d -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 {} ;Цей робочий процес займає менше хвилини і дає вам повну картину макета каталогу вашого веб-сервера, дозволів та споживання дискового простору — важливі знання для будь-якого адміністратора, який керує VPS з cPanel або користувацьким стеком Linux.
Висновок
Перелік директорій є однією з найфундаментальніших навичок Linux, однак метод, який ви виберете, має більше значення, ніж думають більшість початківців. Ось резюме ключових висновків:
ls -d */ідеальний для швидких інтерактивних перевірок — але він ігнорує приховані директорії та не придатний для написання скриптів.find . -mindepth 1 -maxdepth 1 -type dє золотим стандартом для надійного, портативного, безпечного для скриптів переліку директорій, який включає приховані записи.tree -dнеоцінний для візуалізації складних структур та їх передачі іншим.- Уникайте
ls -l | grep "^d"— він крихкий, залежить від локалізації та не має переваг надfind.
Незалежно від того, керуєте ви конфігураціями в середовищі Dedicated Servers, розгортаєте веб-додатки чи просто вперше досліджуєте нову машину Linux, опанування цих команд заощадить вам час, запобіжить дорогим помилкам та дасть вам впевненість для навігації будь-якою файловою системою з точністю.
Командний рядок — це не перешкода — це суперсила. І все починається з того, щоб точно знати, де ви знаходитесь і що вас оточує.
на всіх хостингових послугах