Спестете 15% от всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код: Skills За начало
Заглавия
Linux

Как да изброите директориите в Linux: Пълно ръководство за начинаещи и системни администратори

Работата в Linux често се чувства като навигация в огромна библиотека. Вместо рафтове, имате директории (папки), а вместо книги, имате файлове. Независимо дали сте опитен системен администратор, разработчик или любознателен начинаещ, който тепърва започва, овладяването на основите на навигацията в файловата система е задължително. Един от най-критичните основни умения е знанието как да изброите директориите ефективно и точно.

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

Защо Изреждането на Директории е Важно

На личния компютър, може да разглеждате случайно папката си “Documents” или “Downloads” чрез графичен интерфейс. На 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 да не влиза в поддиректориите, а да показва самите записи на директориите.
  • */ — Шаблон на shell 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 дистрибуции — включително тези, работещи на 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

Най-добрите практики за производствени сървърни среди

Когато работите на живия сървър — независимо дали е 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 машина за първи път, овладяването на тези команди ще ви спести време, ще предотврати скъпи грешки и ще ви даде увереност да навигирате всяка файлова система с прецизност.

Командният ред не е препятствие — това е суперсила. И всичко започва с познаването точно къде сте и какво ви обкръжава.