В Linux команда tree
используется для рекурсивного вывода структуры каталогов или отображения содержимого каталогов в древовидном формате.
Команда выводит пути к каталогам и файлам в каждом подкаталоге, а также данные об общем количестве подкаталогов и файлов.
Содержание
- Синтаксис
- Опции
- Установка
- Примеры использования команды tree в Linux
- Без параметров
- Включение в вывод скрытых файлов
- С префиксом полного пути
- Только подкаталоги
- Ограничение глубины отображения дерева
- Вывод файлов по шаблону
- Удаление пустых каталогов из вывода
- Разрешения для файлов
- Имя пользователя или UID
- Размер файлов в удобном формате
- Дата последнего изменения
- Вывод дерева в файл
- Итоги
Синтаксис
tree [опции]
Опции
Варианты листинга:
- -a
- Перечислить все файлы
- -d
- Только список каталогов
- -l
- Следовать символическим ссылкам, ведущим к каталогам
- -f
- Вывести префикс полного пути для каждого файла
- -x
- Оставаться только в текущей файловой системе
- -L level
- Опускаться только на нижние уровни каталогов
- -R
- Перезапустить команду, когда будет достигнут максимальный уровень каталога
- -P pattern
- Перечислить только те файлы, которые соответствуют заданному шаблону
- -I pattern
- Не перечислять файлы, соответствующие заданному шаблону
- -o filename
- Вывод в файл вместо стандартного вывода
Параметры файлов:
- -q
- Вывести непечатаемые символы как
?
- -N
- Вывести непечатаемые символы как есть
- -Q
- Заключить имена файлов в двойные кавычки
- -p
- Вывести список разрешений для каждого файла
- -u
- Отобразить владельца файла или номер UID
- -g
- Отобразить владельца файловой группы или номер GID.
- -s
- Вывести размер в байтах каждого файла
- -h
- Вывести размер более понятным для человека способом
- -D
- Вывести дату последнего изменения или изменения статуса (с опцией
-c
) - -F
- Добавить
/
,=
,*
,@
,|
или>
- --inode
- Вывести номер индексного дескриптора каждого файла
- --device
- Вывести идентификационный номер устройства, которому принадлежит каждый файл
Параметры сортировки:
- -v
- Сортировать файлы в алфавитно-цифровом порядке по версии
- -t
- Сортировать файлы по времени последнего изменения
- -c
- Сортировать файлы по времени последнего изменения статуса
- -U
- Оставлять файлы несортированными
- -r
- Обратный порядок сортировки
- --dirsfirst
- Список каталогов перед файлами (
-U
отключена) - --filesfirst
- Список файлов перед каталогами (
-U
отключена)
Параметры графики:
- -i
- Не выводить линии отступа
- -n
- Всегда отключать раскрашивание
- -C
- Всегда включать раскрашивание
Установка
Утилита в дистрибутивах Linux не предустановлена. Её необходимо устанавливать самостоятельно, но установка её очень проста.
В Arch Linux:
$ sudo pacman -S tree
В Ubuntu:
$ sudo apt install tree
Примеры использования команды tree в Linux
Без параметров
Для просмотра содержимого каталога в древовидном формате, перейдите в нужный каталог и запустите команду tree
без каких-либо параметров:
oleg@mobile:~/Apps/XEP:$ tree
.
├── doc
│ ├── intro.html
│ ├── intro.pdf
│ ├── PNGgraphics
│ │ ├── BackendsAFPConfig.png
│ │ ├── BackendsPDFConfig.png
│ │ ├── BackendsPSConfig.png
│ │ ├── FontsConfig.png
│ │ ├── Formatting.png
│ │ ├── LanguagesConfig.png
│ │ ├── MainConfig.png
│ │ ├── OpenFile.png
│ │ ├── Parameters.png
│ │ ├── renderx1.png
│ │ ├── renderx2.png
│ │ └── SelectFont.png
│ ├── reference.html
│ ├── reference.pdf
│ ├── tutorial.html
│ ├── tutorial.pdf
│ ├── WhatsNew.txt
│ ├── XEPUserGuide.html
│ └── XEPUserGuide.pdf
├── examples
│ ├── basic
│ │ ├── bgimage.fo
│ │ ├── borders.fo
│ │ ├── color.fo
│ │ ├── columns.fo
│ │ ├── Images
│ │ │ └── spots.jpg
│ │ ├── inline-borders.fo
│ │ ├── linebreak.fo
│ │ ├── lists.fo
│ │ ├── padding.fo
│ │ └── table_spans.fo
│ ├── charsets
│ │ ├── adobe-standard.fo
│ │ ├── phonetic.fo
│ │ ├── symbol.fo
│ │ └── zapf-dingbats.fo
│ ├── hammer
│ │ ├── hammer.xml
│ │ ├── hammer.xsl
│ │ └── Images
│ │ ├── box.jpg
│ │ ├── brick.jpg
│ │ ├── can.jpg
│ │ ├── hammer.jpg
│ │ ├── nail.jpg
│ │ ├── plank.jpg
│ │ └── screw.jpg
│ └── xmlspec
│ ├── readme.txt
│ ├── w3c.gif
│ ├── xml2e.xml
│ ├── xmlspec20.xsl
│ ├── xmlspec.dtd
│ ├── xpath.xml
│ └── xslt.xml
├── fonts
│ ├── arialbd.ttf
│ ├── arialbi.ttf
│ ├── ariali.ttf
│ ├── arial.ttf
│ ├── courbd.ttf
│ ├── courbi.ttf
│ ├── Courier.afm
│ ├── Courier-Bold.afm
│ ├── Courier-BoldOblique.afm
│ ├── Courier-Oblique.afm
│ ├── couri.ttf
│ ├── cour.ttf
│ ├── Helvetica.afm
│ ├── Helvetica-Bold.afm
│ ├── Helvetica-BoldOblique.afm
│ ├── Helvetica-Oblique.afm
│ ├── IPA.afm
│ ├── IPA.glyphs
│ ├── IPA.pfa
│ ├── palabi.ttf
│ ├── palab.ttf
│ ├── palai.ttf
│ ├── pala.ttf
│ ├── Symbol.afm
│ ├── tahomabd.ttf
│ ├── tahoma.ttf
│ ├── timesbd.ttf
│ ├── timesbi.ttf
│ ├── Times-Bold.afm
│ ├── Times-BoldItalic.afm
│ ├── Times-Italic.afm
│ ├── timesi.ttf
│ ├── Times-Roman.afm
│ ├── times.ttf
│ ├── verdanab.ttf
│ ├── verdanai.ttf
│ ├── verdana.ttf
│ ├── verdanaz.ttf
│ └── ZapfDingbats.afm
├── hyphen
│ ├── dehyph_rx.tex
│ ├── eshyph_rx.tex
│ ├── frhyph_rx.tex
│ ├── hyphen.tex
│ ├── plhyph_rx.tex
│ ├── ruhyphal.tex
│ └── ukhyphen.tex
├── images
│ ├── 404.gif
│ ├── colorbar.svg
│ ├── logo-renderx.svg
│ └── registration.svg
├── lib
│ ├── crimson.jar
│ ├── saxon.jar
│ ├── setupJEditPlugin.jar
│ ├── x4u.jar
│ ├── xep.jar
│ ├── XEPTask.jar
│ └── xt.jar
├── license.xml
├── readme.txt
├── validate
├── x4u
├── xep
├── xep.xml
└── xep.xml.old
13 directories, 115 files
oleg@mobile:~/Apps/XEP:$
Команда вывела содержимое рабочего каталога, рекурсивно показывая подкаталоги и файлы, а также данные об общем количестве подкаталогов и файлов.
Не забудьте вызвать sudo
для запуска дерева в каталоге, для которого требуются права доступа пользователя root
.
Включение в вывод скрытых файлов
Для включения в вывод скрытых файлов используется опция -a
:
oleg@mobile:~:$ tree -ax
.
├── abc.txt
├── Apps
├── .asoundrc
├── .asoundrc.asoundconf
├── .aspell.en.prepl
├── .audacity-data
├── aur
├── backgrounds
├── .bash_history
├── .bash_profile
├── .bashrc
├── bin
├── build
├── .cache
├── .calc_history
├── .claws-mail
├── .config
...
├── .wxcam
├── .Xauthority
├── .xbindkeysrc
├── .XCompose
├── xep
├── .xine
├── .xinitrc
├── .xscreensaver
├── .xsession
├── .xwmconfig
├── Yandex.Disk
├── .yarnrc
65 directories, 29 files
В данном случае я добавил также опцию -x
, чтобы не выполнялась рекурсия.
С префиксом полного пути
Для просмотра содержимое каталога с префиксом полного пути для каждого подкаталога и файла используется опция -f
:
oleg@mobile:~/Apps/XEP:$ tree -f
.
├── ./doc
│ ├── ./doc/intro.html
│ ├── ./doc/intro.pdf
│ ├── ./doc/PNGgraphics
...
│ ├── ./doc/reference.html
│ ├── ./doc/reference.pdf
│ ├── ./doc/tutorial.html
│ ├── ./doc/tutorial.pdf
│ ├── ./doc/WhatsNew.txt
│ ├── ./doc/XEPUserGuide.html
│ └── ./doc/XEPUserGuide.pdf
├── ./examples
...
├── ./fonts
...
├── ./hyphen
│ ├── ./hyphen/dehyph_rx.tex
│ ├── ./hyphen/eshyph_rx.tex
│ ├── ./hyphen/frhyph_rx.tex
│ ├── ./hyphen/hyphen.tex
│ ├── ./hyphen/plhyph_rx.tex
│ ├── ./hyphen/ruhyphal.tex
│ └── ./hyphen/ukhyphen.tex
├── ./images
│ ├── ./images/404.gif
│ ├── ./images/colorbar.svg
│ ├── ./images/logo-renderx.svg
│ └── ./images/registration.svg
├── ./lib
│ ├── ./lib/crimson.jar
│ ├── ./lib/saxon.jar
│ ├── ./lib/setupJEditPlugin.jar
│ ├── ./lib/x4u.jar
│ ├── ./lib/xep.jar
│ ├── ./lib/XEPTask.jar
│ └── ./lib/xt.jar
├── ./license.xml
├── ./readme.txt
├── ./validate
├── ./x4u
├── ./xep
├── ./xep.xml
└── ./xep.xml.old
13 directories, 115 files
oleg@mobile:~/Apps/XEP:$
Только подкаталоги
Вы также можете указать дереву печатать только подкаталоги без файлов в них, используя опцию -d
. При использовании вместе с опцией -f
будет выводиться полный путь к каталогу:
oleg@mobile:~/Apps/XEP:$ tree -df
.
├── ./doc
│ └── ./doc/PNGgraphics
├── ./examples
│ ├── ./examples/basic
│ │ └── ./examples/basic/Images
│ ├── ./examples/charsets
│ ├── ./examples/hammer
│ │ └── ./examples/hammer/Images
│ └── ./examples/xmlspec
├── ./fonts
├── ./hyphen
├── ./images
└── ./lib
13 directories
oleg@mobile:~/Apps/XEP:$
Ограничение глубины отображения дерева
Для ограничения максимальной глубины отображения дерева каталогов используется опция -L
с добавлением цифрового указания глубины:
oleg@mobile:~/Apps/XEP:$ tree -f -L 2
.
├── ./doc
│ ├── ./doc/intro.html
│ ├── ./doc/intro.pdf
│ ├── ./doc/PNGgraphics
│ ├── ./doc/reference.html
│ ├── ./doc/reference.pdf
│ ├── ./doc/tutorial.html
│ ├── ./doc/tutorial.pdf
│ ├── ./doc/WhatsNew.txt
│ ├── ./doc/XEPUserGuide.html
│ └── ./doc/XEPUserGuide.pdf
├── ./examples
│ ├── ./examples/basic
│ ├── ./examples/charsets
│ ├── ./examples/hammer
│ └── ./examples/xmlspec
├── ./fonts
...
├── ./hyphen
│ ├── ./hyphen/dehyph_rx.tex
│ ├── ./hyphen/eshyph_rx.tex
│ ├── ./hyphen/frhyph_rx.tex
│ ├── ./hyphen/hyphen.tex
│ ├── ./hyphen/plhyph_rx.tex
│ ├── ./hyphen/ruhyphal.tex
│ └── ./hyphen/ukhyphen.tex
├── ./images
│ ├── ./images/404.gif
│ ├── ./images/colorbar.svg
│ ├── ./images/logo-renderx.svg
│ └── ./images/registration.svg
├── ./lib
│ ├── ./lib/crimson.jar
│ ├── ./lib/saxon.jar
│ ├── ./lib/setupJEditPlugin.jar
│ ├── ./lib/x4u.jar
│ ├── ./lib/xep.jar
│ ├── ./lib/XEPTask.jar
│ └── ./lib/xt.jar
├── ./license.xml
├── ./readme.txt
├── ./validate
├── ./x4u
├── ./xep
├── ./xep.xml
└── ./xep.xml.old
11 directories, 73 files
oleg@mobile:~/Apps/XEP:$
Максимальная глубина отображения дерева каталогов была установлена на 2
.
Вывод файлов по шаблону
Для отображения только тех файлов, которые соответствуют шаблону подстановочных знаков, используется опция -P
и указывается шаблон:
oleg@mobile:~/Apps/XEP:$ tree -f -P *.ttf
.
├── ./doc
│ └── ./doc/PNGgraphics
├── ./examples
│ ├── ./examples/basic
│ │ └── ./examples/basic/Images
│ ├── ./examples/charsets
│ ├── ./examples/hammer
│ │ └── ./examples/hammer/Images
│ └── ./examples/xmlspec
├── ./fonts
│ ├── ./fonts/arialbd.ttf
│ ├── ./fonts/arialbi.ttf
│ ├── ./fonts/ariali.ttf
│ ├── ./fonts/arial.ttf
│ ├── ./fonts/courbd.ttf
│ ├── ./fonts/courbi.ttf
│ ├── ./fonts/couri.ttf
│ ├── ./fonts/cour.ttf
│ ├── ./fonts/palabi.ttf
│ ├── ./fonts/palab.ttf
│ ├── ./fonts/palai.ttf
│ ├── ./fonts/pala.ttf
│ ├── ./fonts/tahomabd.ttf
│ ├── ./fonts/tahoma.ttf
│ ├── ./fonts/timesbd.ttf
│ ├── ./fonts/timesbi.ttf
│ ├── ./fonts/timesi.ttf
│ ├── ./fonts/times.ttf
│ ├── ./fonts/verdanab.ttf
│ ├── ./fonts/verdanai.ttf
│ ├── ./fonts/verdana.ttf
│ └── ./fonts/verdanaz.ttf
├── ./hyphen
├── ./images
└── ./lib
13 directories, 22 files
oleg@mobile:~/Apps/XEP:$
В этом примере для отображения файлов был использован шаблон *.ttf
.
Удаление пустых каталогов из вывода
Вы можете указать дереву удалять пустые каталоги из вывода, добавив опцию --prune
:
oleg@mobile:~/Apps/XEP:$ tree -f -P *.ttf --prune
.
└── ./fonts
├── ./fonts/arialbd.ttf
├── ./fonts/arialbi.ttf
├── ./fonts/ariali.ttf
├── ./fonts/arial.ttf
├── ./fonts/courbd.ttf
├── ./fonts/courbi.ttf
├── ./fonts/couri.ttf
├── ./fonts/cour.ttf
├── ./fonts/palabi.ttf
├── ./fonts/palab.ttf
├── ./fonts/palai.ttf
├── ./fonts/pala.ttf
├── ./fonts/tahomabd.ttf
├── ./fonts/tahoma.ttf
├── ./fonts/timesbd.ttf
├── ./fonts/timesbi.ttf
├── ./fonts/timesi.ttf
├── ./fonts/times.ttf
├── ./fonts/verdanab.ttf
├── ./fonts/verdanai.ttf
├── ./fonts/verdana.ttf
└── ./fonts/verdanaz.ttf
1 directory, 22 files
oleg@mobile:~/Apps/XEP:$
Разрешения для файлов
Для вывода разрешений для каждого файла используется опция -p
:
oleg@mobile:~/Apps/FreeShip:$ tree -fp
[drwxr-xr-x] .
├── [drwxr-xr-x] ./Exec
├── [drwxr-xr-x] ./Export
├── [-rwxrwxr-x] ./FreeShip
├── [-rw-r--r--] ./hulls.zip
├── [drwxr-xr-x] ./Import
...
├── [drwxr-xr-x] ./Languages
...
├── [drwxr-xr-x] ./Manuals
│ ├── [-rw-r--r--] ./Manuals/English.pdf
│ ├── [-rw-r--r--] ./Manuals/Francais.pdf
│ ├── [-rw-r--r--] ./Manuals/ReadMe1st.txt
│ ├── [-rw-r--r--] ./Manuals/Russian.pdf
│ ├── [-rw-r--r--] ./Manuals/Spanish.pdf
│ ├── [-rw-r--r--] ./Manuals/Ukrainian.pdf
│ └── [-rw-r--r--] ./Manuals/Vietnamese.pdf
├── [drwxr-xr-x] ./Ships
├── [drwxr-xr-x] ./Temp
└── [-rwxr-xr-x] ./uninstall-user.sh
8 directories, 157 files
oleg@mobile:~/Apps/FreeShip:$
Имя пользователя или UID
Для вывода имени пользователя используется опция -u
. Можно также добавить и имя группы (GID), используя опцию -g
:
oleg@mobile:~/Apps/FreeShip:$ tree -fpug
[drwxr-xr-x oleg 100 ] .
├── [drwxr-xr-x oleg 100 ] ./Exec
├── [drwxr-xr-x oleg 100 ] ./Export
├── [-rwxrwxr-x oleg 100 ] ./FreeShip
├── [-rw-r--r-- oleg 100 ] ./hulls.zip
├── [drwxr-xr-x oleg 100 ] ./Import
...
├── [drwxr-xr-x oleg 100 ] ./Languages
...
├── [drwxr-xr-x oleg 100 ] ./Manuals
│ ├── [-rw-r--r-- oleg 100 ] ./Manuals/English.pdf
│ ├── [-rw-r--r-- oleg 100 ] ./Manuals/Francais.pdf
│ ├── [-rw-r--r-- oleg 100 ] ./Manuals/ReadMe1st.txt
│ ├── [-rw-r--r-- oleg 100 ] ./Manuals/Russian.pdf
│ ├── [-rw-r--r-- oleg 100 ] ./Manuals/Spanish.pdf
│ ├── [-rw-r--r-- oleg 100 ] ./Manuals/Ukrainian.pdf
│ └── [-rw-r--r-- oleg 100 ] ./Manuals/Vietnamese.pdf
├── [drwxr-xr-x oleg 100 ] ./Ships
├── [drwxr-xr-x oleg 100 ] ./Temp
└── [-rwxr-xr-x oleg 100 ] ./uninstall-user.sh
8 directories, 157 files
oleg@mobile:~/Apps/FreeShip:$
Размер файлов в удобном формате
Для вывода размера каждого файла в удобном для человека формате используется опция -h
:
oleg@mobile:~/Apps/FreeShip:$ tree -fpug -h
[drwxr-xr-x oleg 100 4.0K] .
├── [drwxr-xr-x oleg 100 4.0K] ./Exec
├── [drwxr-xr-x oleg 100 4.0K] ./Export
├── [-rwxrwxr-x oleg 100 28M] ./FreeShip
├── [-rw-r--r-- oleg 100 4.9M] ./hulls.zip
├── [drwxr-xr-x oleg 100 4.0K] ./Import
...
├── [drwxr-xr-x oleg 100 4.0K] ./Languages
...
├── [drwxr-xr-x oleg 100 4.0K] ./Manuals
│ ├── [-rw-r--r-- oleg 100 3.3M] ./Manuals/English.pdf
│ ├── [-rw-r--r-- oleg 100 2.8M] ./Manuals/Francais.pdf
│ ├── [-rw-r--r-- oleg 100 201] ./Manuals/ReadMe1st.txt
│ ├── [-rw-r--r-- oleg 100 2.3M] ./Manuals/Russian.pdf
│ ├── [-rw-r--r-- oleg 100 7.6M] ./Manuals/Spanish.pdf
│ ├── [-rw-r--r-- oleg 100 2.5M] ./Manuals/Ukrainian.pdf
│ └── [-rw-r--r-- oleg 100 2.3M] ./Manuals/Vietnamese.pdf
├── [drwxr-xr-x oleg 100 4.0K] ./Ships
├── [drwxr-xr-x oleg 100 4.0K] ./Temp
└── [-rwxr-xr-x oleg 100 3.6K] ./uninstall-user.sh
8 directories, 157 files
oleg@mobile:~/Apps/FreeShip:$
Дата последнего изменения
Для отображения даты последнего изменения для каждого подкаталога или файла используется опция -D
:
oleg@mobile:~/Apps/FreeShip:$ tree -fpug -h -D
[drwxr-xr-x oleg 100 4.0K Aug 23 2017] .
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Exec
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Export
├── [-rwxrwxr-x oleg 100 28M Apr 6 2015] ./FreeShip
├── [-rw-r--r-- oleg 100 4.9M Aug 23 2017] ./hulls.zip
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Import
...
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Languages
...
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Manuals
│ ├── [-rw-r--r-- oleg 100 3.3M Aug 23 2017] ./Manuals/English.pdf
│ ├── [-rw-r--r-- oleg 100 2.8M Aug 23 2017] ./Manuals/Francais.pdf
│ ├── [-rw-r--r-- oleg 100 201 Aug 23 2017] ./Manuals/ReadMe1st.txt
│ ├── [-rw-r--r-- oleg 100 2.3M Aug 23 2017] ./Manuals/Russian.pdf
│ ├── [-rw-r--r-- oleg 100 7.6M Aug 23 2017] ./Manuals/Spanish.pdf
│ ├── [-rw-r--r-- oleg 100 2.5M Aug 23 2017] ./Manuals/Ukrainian.pdf
│ └── [-rw-r--r-- oleg 100 2.3M Aug 23 2017] ./Manuals/Vietnamese.pdf
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Ships
├── [drwxr-xr-x oleg 100 4.0K Aug 23 2017] ./Temp
└── [-rwxr-xr-x oleg 100 3.6K Aug 23 2017] ./uninstall-user.sh
8 directories, 157 files
oleg@mobile:~/Apps/FreeShip:$
Вывод дерева в файл
Вы можете вывести дерево в файл для последующего анализа, используя опцию -o
:
oleg@mobile:~/Apps/FreeShip:$ tree -fpug -h -D -o ~/tree.txt
oleg@mobile:~/Apps/FreeShip:$
Проверяем:
oleg@mobile:~/Apps/FreeShip:$ ls -l ~/tree.txt
-rw-r--r-- 1 oleg users 14856 сен 10 16:26 /home/oleg/tree.txt
oleg@mobile:~/Apps/FreeShip:$
Итоги
Несомненно, команда tree
в Linux окажет серьёзную помощь многим пользователям. Использование её в работе не представляет особых сложностей.