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

Чтобы команда работала на машинах с ОС Linux, нужно от имени администратора установить соответствующую утилиту — в набор «из коробки» она не входит.

Синтаксис и опции tree

Запись команды tree ничем не отличается от большинства стандартных команд и выглядит следующим образом:

$ tree опции

Опций у команды tree множество. Вот те из них, которые отвечают за отображение дерева папок:

  • -a — вывод всех без исключения файлов.
  • -d — только список директорий.
  • -l — переход по символическим ссылкам, которые ведут к папкам.
  • -f — содержимое папок будет показано с префиксами пути.
  • -x — учитывает только текущую файловую систему.
  • -L — задает уровень вложенности для отображения в выводе.
  • -R — рекурсивный переход по каталогам всех уровней.
  • -P — отображение файлов, название которых соответствует шаблону.
  • -I — исключение из вывода файлов, название которых соответствует шаблону.
  • -o — печать вывода в файл с заданным именем.
  • —noreport — запрещает команде выводить отчет по количеству папок и файлов в конце дерева.
  • —charset — задает кодировки для отображения графических и html-файлов.
  • —filelimit — папки, которые содержат больше файлов, чем указано, показаны не будут.

А эти опции используются для управления отображением названий документов:

  • -q — заменяет непечатные символы в названиях файлов знаком ?.
  • -N — выводит непечатные символы в названиях файлов как есть.
  • -Q — заключает названия файлов в двойные кавычки.
  • -p — для каждого из файлов указывает его название и список разрешенных действий.
  • -u — печатает имя или идентификатор учетной записи, под которой был создан файл.
  • -g — печатает имя или идентификатор группы пользователей, которая имеет права на доступ к файлу.
  • -s — рядом с названием файла выводит его размер в байтах.
  • -h — выводит размер файла в более простом для человеческого восприятия виде, добавляя к числу буквенное сокращение.
  • -D — печатает дату последнего изменения файла (либо последнее изменение статуса в комбинации с опцией -c).
  • -F — добавляет символ / для папок, = для файлов сокета, * для исполняемых файлов, > для door-файлов, | для специальных файлов FIFO.
  • —inodes — выводит номера индексных дескрипторов для файлов и папок.
  • —device — указывает номер устройства, к которому принадлежит файл или папка.

Опции для сортировки результатов:

  • -v — упорядочивает выдачу по уровням вложенности.
  • -t — сортирует выдачу по дате последнего изменения файлов и папок.
  • -c — сортирует выдачу по дате последнего изменения статуса.
  • -U — результаты будут выведены в том порядке, в котором папки расположены на диске.
  • -r — сортирует выдачу в обратном порядке.
  • —dirsfirst — сначала будут показаны папки, потом — файлы.

Опции отображения дерева:

  • -i — убирает линии («ветки» дерева), файлы и папки отображаются в виде списка.
  • -n — делает дерево одноцветным.
  • -C — возвращает дереву разноцветное отображение после использования опции -n.

Дальше рассмотрим как команда tree в linux может использоваться на примерах.

Примеры использования tree

Самый простой способ использовать команду tree Linux — напечатать в терминале всего лишь одно слово:

tree

Результатом станет стандартное отображение структуры папок. Размер выдачи зависит от того, сколько хлама накопилось на жестком диске. У автора его столько, что листать — не перелистать:

Немного сократить объем информации можно, попросив команду показывать только папки. Для этого служит опция -d. А чтобы отпилить от дерева еще больше ненужных веток, установим ограничение на количество файлов, которые хранятся в папках (если файлов больше, папка не попадет в выдачу). В этом нам поможет опция —filelimit.

tree -d --filelimit 26

Кстати, нельзя устанавливать лимит меньше, чем 25 файлов.

По умолчанию команда tree в linux не показывает скрытые папки. Чтобы увидеть их, следует воспользоваться опцией -a. Заодно не помешает упорядочить выдачу — например, по уровням вложенности (параметр -v). Ну и почему бы не узнать, когда тот или иной файл был изменен последний раз — добавим к команде еще и -D.

tree -avD

Теперь поработаем с определенной группой файлов. Для примера отберем те, у которых формат pdf — сделать это позволяет опция -P. Она дает команде понять, что нужно выводить только документы, соответствующие маске. Чтобы задать маску для любого количества символов от 0 до бесконечности используется знак  *, а чтобы обозначить только 1 символ — знак ?.  Название файла или папки следует заключить в одинарные кавычки.

tree -P '*.pdf' --prune

Опция —prune нужна для того, чтобы исключить из выдачи папки, внутри которых нет  искомых документов (по умолчанию команда выводит даже те папки, которые не имеют отношения к поисковому запросу).

Вот что получаем в итоге:

Стандартно результат команды tree направляется в терминал. Но есть возможность напечатать его в файл и сохранить для дальнейшего использования. С этой целью создадим документ txt с названием tree_command_results и поместим его в корневой каталог. После этого выполним команду следующего вида:

tree -d -o tree_command_results.txt

Опция -d использована для сокращения количества информации и ее присутствие здесь не обязательно. Опция -o  отвечает за перенаправление вывода в файл.

В терминале никакой результат не отображается:

Зато в указанном файле находим перечень папок, который занимает 45 страниц:

Для получения дополнительной информации о файлах дополним команду tree опциями -h (показывает размер), -u (указывает на аккаунт, с которого файл был создан), -p (так мы узнаем, что можно делать с каждым конкретным файлом — только просматривать или также изменять его содержимое). Также используем параметр -f, чтобы видеть полный путь к каждому документу.

tree -hupf

Полезный лайфхак — если объединить опции -P и -f, можно быстро находить файлы, затерявшиеся в памяти компьютера:

tree -f -P '*studio*' --prune

Выводы

Пользу команды tree для пользователей Linux переоценить сложно. С ее помощью удается получить всю возможную информацию о файлах и папках, расположенных на жестком диске. Кстати, у нее есть конкурент — более известная команда ls, которая, тем не менее, уступает tree в удобстве и функционале. А как и для чего вы используете команду tree?

Источник: losst.ru