Гид по технологиям

Как использовать команду tree в Linux

• 7 min read • Linux • Обновлено 18 Nov 2025
Команда tree в Linux: руководство и примеры
Команда tree в Linux: руководство и примеры

Что такое tree и зачем она нужна

Команда tree выводит содержимое каталогов в иерархическом, хорошо читаемом виде. Это особенно удобно, когда нужно получить быстрый обзор проекта, проверить вложенные папки или подготовить документ с картой файловой структуры. Tree показывает связи между каталогами и файлами с помощью линий и отступов, а также даёт итог по количеству директорий и файлов.

Важно: не путайте tree с командой pstree. Tree работает с файловой системой, а pstree — с процессами.

Установка и базовый синтаксис

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

Для Debian/Ubuntu используйте:

sudo apt install tree

Установка утилиты tree в Linux

На Fedora, CentOS или RHEL:

sudo dnf install tree

Для Arch Linux:

sudo pacman -S tree

После установки самый простой запуск — без аргументов:

tree

Вывод структуры каталогов командой tree

По умолчанию tree рекурсивно перечисляет каталоги и файлы, показывая иерархию с линиями соединения. Общий синтаксис:

tree [опции] [каталог]

Цвета делают вывод более читаемым: синие элементы часто означают каталоги, зелёные — исполняемые файлы, а обычные файлы — стандартного цвета терминала.

Управление глубиной просмотра

Если каталог очень большой, имеет смысл ограничить глубину. Флаг -L задаёт максимальный уровень вложенности.

Показать два уровня глубины:

tree -L 2

Дерево с двумя уровнями глубины

Показать только каталоги до третьего уровня:

tree -d -L 3

Без ограничений вывод может быть очень длинным. Флаг -L помогает получить чистый обзор, не утопая в деталях.

Включение скрытых файлов и папок

В Linux скрытыми считаются файлы и папки, имена которых начинаются с точки (.). По умолчанию tree их не показывает.

Показать всё, включая скрытые объекты:

tree -a

Показать скрытые файлы и ограничить глубину:

tree -a -L 2

Дерево с показом скрытых файлов на двух уровнях

Скрытые файлы часто содержат настройки (например, .bashrc, .git), поэтому их стоит включать при аудите проекта.

Поиск по шаблону

Флаг -P позволяет фильтровать вывод по шаблону имени файла. Шаблон поддерживает подстановочные символы (globbing).

Показать только Python-файлы:

tree -P "*.py"

Показать только текстовые файлы:

tree -P "*.txt"

Показать файлы, начинающиеся с config:

tree -P "config*"

По умолчанию tree по-прежнему выводит структуру каталогов. Пустые каталоги будут показаны даже если они не содержат файлов, подходящих под шаблон. Чтобы убрать пустые каталоги, добавьте –prune:

tree -P "*.py" --prune

Если нужно исключить паттерны, используйте -I.

Человеко-читаемые размеры файлов

Флаг -h преобразует байты в удобочитаемые единицы (K, M, G). Это экономит время и избавляет от подсчётов в голове.

Показать размеры в удобном формате:

tree -h

Вывод размеров в удобочитаемом виде

Комбинация -h и -L часто используется для быстрого обзора «что занимает место» в верхних уровнях:

tree -hL 2

Комбинирование tree с другими командами

Tree выводит текст, значит его легко комбинировать с grep, less, wc и другими утилитами.

Просмотреть вывод постранично:

tree /usr/lib | less

Использовать поиск по регистру:

tree -a | grep -i "admin"

Посчитать строки вывода:

tree -a | wc -l

Найти и подсветить совпадения (пример с grep –color):

tree -a | grep --color=always -i "config"

Пример: вывести только директории с правами на выполнение владельца и сохранить список путей:

tree -dfi | xargs -I {} sh -c 'test -x "{}" && echo "{}"' > exec_dirs.txt

Объяснение: опция -f выводит полный путь, -i убирает линии и отступы (чистый список), -d — только каталоги. xargs и test позволяют дополнительно фильтровать.

Экспорт и сохранение вывода

Сохранение вывода в текстовый файл:

tree > directory_structure.txt

Добавление в конец файла:

tree -L 2 >> documentation.txt

Создать интерактивную HTML-страницу:

tree -H . > structure.html

Параметр -H генерирует HTML с ссылками; это удобно для документации проектов или для отправки коллегам.

Сохранение структурированного вывода для импорта в другие инструменты можно получить с опцией -J (JSON):

tree -J > structure.json

JSON-вывод полезен при автоматизации, когда нужно парсить структуру программно.

Частые сценарии и примеры

  • Быстрый обзор проекта перед рефакторингом:
tree -a -L 3 --dirsfirst
  • Поиск всех README и файлов лицензий в репозитории:
tree -P "README*|LICENSE*" --prune
  • Подготовка карты директорий для документации:
tree -L 4 --dirsfirst -a > docs/dir_map.txt
  • Найти большие файлы в верхних директориях:
tree -hL 2 | grep -E "[0-9\.]+M|[0-9\.]+G"

(Здесь grep помогает выявить строки с M/G в размере.)

Когда tree не подходит и альтернативы

Counterexample: tree не лучшая утилита если нужно найти файлы по содержимому или по сложным условиям прав доступа. Для таких задач подходят:

  • find — гибкий поиск по имени, времени, правам и по содержимому (в связке с xargs и grep);
  • fd — быстрый замещающий find инструмент с удобным интерфейсом;
  • du — показывает использование дискового пространства; хорош для поиска больших директорий по объёму;
  • ls -R — рекурсивный вывод, но менее наглядный по структуре.

Пример альтернативы для поиска по содержимому:

grep -R --line-number "TODO" src/

Если ваша цель — визуальная интерактивная навигация по дереву, используйте файловые менеджеры (ncdu для дискового анализа, ranger для текстовой навигации).

Шпаргалка и часто используемые опции (cheat sheet)

  • -a — показать все (включая .dot файлы)
  • -d — показывать только каталоги
  • -L N — ограничить глубину N уровнями
  • -P PATTERN — показывать файлы, соответствующие шаблону
  • -I PATTERN — исключить совпадающие имена
  • -h — человекочитаемые размеры
  • -H base — создать HTML
  • -J — JSON-вывод
  • –prune — удалить пустые каталоги из вывода
  • –dirsfirst — выводить каталоги перед файлами
  • -f — показывать полный путь
  • -i — простой список без графических линий

Быстрые комбинации:

  • Дерево без линий, полный путь:
tree -fi
  • JSON для автоматизации:
tree -J > structure.json
  • HTML отчёт:
tree -H . -L 3 > report.html

Рольные чек-листы

Для разработчика:

  • Просмотреть структуру проекта на верхних 3 уровнях.
  • Найти скрытые настройки (.env, .git).
  • Экспортировать в docs/dir_map.txt перед большой правкой.

Для системного администратора:

  • Проверить /etc и /var на предмет неожиданных вложений.
  • Использовать tree -a для конфигураций служб.
  • Сохранять снимок структуры перед обновлением.

Для инженера документации:

  • Генерировать HTML-версию структуры для включения в документацию.
  • Использовать –dirsfirst для читаемости.

Мини-методология: как задокументировать структуру проекта

  1. Определите цель: обзор, аудит, отчёт для коллег.
  2. Выполните сначала фильтр по скрытым файлам, если важны настройки:
tree -a -L 3 --dirsfirst > docs/dir_map.txt
  1. Для публикации на сайте создайте HTML:
tree -H . -L 4 --dirsfirst > docs/structure.html
  1. Зафиксируйте версию tree (если важна воспроизводимость) и храните JSON для автоматической проверки:
tree -J > docs/structure.json
  1. Добавьте манифест с объяснениями для каждого верхнего каталога в README.

Критерии приёмки

  • Вывод команды должен показывать корень проекта и не более 4 уровней (если это требование).
  • Все скрытые конфигурационные файлы должны быть видимы при использовании опции -a.
  • HTML-отчёт должен открываться в браузере и содержать кликабельные ссылки на файлы.
  • JSON-вывод должен быть валидным для дальнейшей обработки.

Совместимость и перенос

Tree доступен в большинстве дистрибутивов Linux и в портах для BSD. Опции могут немного различаться между версиями. Если вам нужна кроссплатформенная совместимость (Windows), используйте среду, где доступен GNU tree или дополнительные утилиты (например, Cygwin или WSL).

При миграции документов учтите кодировки и формат разделителей путей. JSON и HTML — наиболее безопасные варианты для обмена между системами.

Безопасность и конфиденциальность

Tree просто читает структуру каталогов. Но вывод может включать имена конфигурационных файлов или пути, которые нежелательно публиковать.

Рекомендации:

  • Не публикуйте вывод tree без удаления/скрытия секретов (ключей, .env с паролями).
  • Перед созданием HTML проверьте наличие чувствительных файлов и исключите их через -I или –prune.
  • Для автоматизированных отчётов храните JSON в приватном хранилище и используйте процессы ревью.

Дополнительные советы и приёмы

  • Чтобы получить только список путей без графики и без директорий, используйте сочетание find и tree-подобных фильтров; но проще использовать find:
find . -type f -name "*.py"
  • Если у вас медленный диск и большой каталог, сначала ограничьте глубину (-L) и отключите цвета, чтобы ускорить вывод.

  • Для CI и автоматических проверок храните контрольную JSON-версию структуры и проверяйте изменения с помощью diff.

Глоссарий

  • каталог — папка в файловой системе, содержащая файлы и другие каталоги.
  • шаблон (pattern) — маска для выбора имён файлов, использующая * и ?.
  • рекурсия — обход вложенных каталогов на произвольную глубину.

Заключение

Команда tree проста, но мощна. Она ускоряет понимание структуры проекта, помогает в документации и служит удобным инструментом для администрирования. Сочетайте её с grep, less, find и другими утилитами для получения максимально полезного результата. Начните с простых команд, добавляйте фильтры и экспортируйте в формат, подходящий для ваших задач.

Ключевые команды для быстрого старта:

  • Установка: sudo apt install tree
  • Быстрая визуализация: tree -L 2 –dirsfirst
  • HTML-отчёт: tree -H . > structure.html
  • JSON-экспорт: tree -J > structure.json

Спасибо за внимание. Если нужно, подготовлю рольные шаблоны команд для вашего проекта или CI-пайплайна.

Иллюстрация вывода tree с подсветкой директорий и файлов

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро