tree — наглядный вывод структуры директорий в виде дерева с кучей фильтров, сортировок и форматов (включая HTML).

📝 Топ‑20 самых полезных флагов tree#

  • -L N — ограничить глубину до N уровней.
  • -a — показывать скрытые файлы (.*).
  • -d — показывать только директории.
  • -I PATTERNисключить по шаблону (glob, напр. -I "node_modules|dist").
  • -P PATTERNвключить только соответствующие файлы (glob).
  • --prune — скрывать пустые папки после фильтрации -I/-P.
  • -f — показывать полные пути к файлам.
  • -i — ASCII‑отступы, без линий (plain).
  • -A — использовать ASCII‑псевдографику вместо юникода.
  • -h — человекочитаемые размеры (с -s/--du).
  • -s — показывать размер файла (байты, с -h красиво).
  • --du — суммарный размер директорий (как du), сочетается с -h.
  • -p — права доступа (rwx) для каждого узла.
  • -u / -g — показывать владельца и группу.
  • -D — дата последней модификации.
  • -t — сортировать по времени (новые сверху, с -r — наоборот).
  • -S — сортировать по размеру (с -r — обратный порядок).
  • --dirsfirst — директории перед файлами.
  • -H URL — сгенерировать HTML с ссылками (base href).
  • -o FILE — записать вывод в файл (часто вместе с -H).

🚀 Айсберг команд tree — от базового к гуру#

🟢 Уровень 1 — База (разогрев)#

tree

  • Показать дерево текущего каталога

tree -L 2

  • Показать до 2 уровней вложенности

tree -a

  • Включая скрытые файлы

tree dir_name

  • Дерево для другой директории

🟡 Уровень 2 — Фильтры и выборки#

tree -d

  • Только директории

tree -I "node_modules|dist|.git"

  • Исключить папки по шаблону (регэксп‑подобный glob)

tree -P "*.png"

  • Показать только файлы по шаблону

tree -L 3 -I ".git|*.tmp" --prune

  • Обрезать глубину, скрыть мусор и убрать пустые ветви

🟠 Уровень 3 — Форматирование и отображение#

tree -f

  • Печатать полные пути

tree -i -A

  • Простой ASCII‑вывод без линий, удобен для копипаста

tree -h -s

  • Размеры файлов (сумма директорий не считается — см. --du)

tree -p -u -g -D

  • Права, владелец, группа, дата для каждого узла

tree --dirsfirst

  • Сначала папки, потом файлы

🔵 Уровень 4 — Сортировки и порядок#

tree -t

  • Сортировать по времени (свежие сверху)

tree -t -r

  • По времени, но в обратном порядке

tree -S

  • Сортировка по размеру

tree -S -r

  • Крупные внизу (обратная сортировка)

tree -v

  • «Естественная» сортировка имён (1,2,10 — по числам)

🟣 Уровень 5 — Размеры и диск#

tree --du -h

  • Суммарные размеры директорий (как du) в человекочитаемом виде

tree -s -h -L 2

  • Размеры файлов до 2 уровней

tree --inodes

  • Показать номера inode (зависит от сборки tree)

tree -x

  • Не выходить за пределы текущего файлового системы (как find -xdev)

🔴 Уровень 6 — Экспорт и HTML#

tree -H "http://localhost/" -o tree.html

  • Сгенерировать HTML‑страницу с кликабельными ссылками

tree -H "." -o index.html -L 3 --dirsfirst

  • HTML‑индекс каталога (до 3 уровней)

tree -A -o tree.txt

  • Плоский ASCII‑дамп в файл

tree -f --noreport | tee tree.txt

  • Записать вывод без финальной статистики

🟤 Уровень 7 — Комбо и интеграции#

tree -L 2 -I "node_modules|dist|.git" --prune | less -R

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

tree -f -P "*.py" -I ".venv|__pycache__"

  • Только Python‑файлы, исключая виртуальные окружения/кеш

tree --du -h -I ".git|node_modules" --prune | grep -E "^[0-9\.]+[KMG] .*"

  • Быстро найти «тяжёлые» узлы из вывода (по размерам)

tree -fi -P "*.jpg" | xargs -I {} -n 1 echo "Обрабатываю {}"

  • Пройтись по каждому найденному файлу командой

tree -L 1 -d --dirsfirst | awk '{print NR": "$0}'

  • Пронумеровать верхнеуровневые директории

🧠 Бонус — типичные пресеты#

tree -L 2 --dirsfirst -I ".git|node_modules|dist|build" --prune

  • Быстрый обзор проекта

tree -a -I ".git|.idea|.vscode|node_modules" --prune

  • Полный обзор, но без «шума» IDE и зависимостей

tree --du -h -I "node_modules|dist|build|.git" --prune

  • Картина «кто занимает место»

tree -H "." -o index.html -I ".git|node_modules|dist" --prune

  • Красивый HTML‑индекс директории проекта