TREE(1) General Commands Manual TREE(1)
NAME
tree - list contents of directories in a tree-like format.
SYNOPSIS
tree [-acdfghilnpqrstuvxACDFJQNSUX] [-L level [-R]] [-H [-]baseHREF] [-T
title] [-o filename] [-P pattern] [-I pattern] [--gitignore] [--git-
file[=]file] [--matchdirs] [--metafirst] [--ignore-case] [--nolinks]
[--hintro[=]file] [--houtro[=]file] [--inodes] [--device]
[--sort[=]name] [--dirsfirst] [--filesfirst] [--filelimit[=]#] [--si]
[--du] [--prune] [--charset[=]X] [--timefmt[=]format] [--fromfile]
[--fromtabfile] [--fflinks] [--info] [--infofile[=]file] [--noreport]
[--hyperlink] [--scheme[=]schema] [--authority[=]hostname] [--opt-tog-
gle] [--version] [--help] [--] [directory ...]
DESCRIPTION
Tree is a recursive directory listing program that produces a depth in-
dented listing of files, which is colorized ala dircolors if the LS_COL-
ORS environment variable is set and output is to tty. With no argu-
ments, tree lists the files in the current directory. When directory
arguments are given, tree lists all the files and/or directories found
in the given directories each in turn. Upon completion of listing all
files/directories found, tree returns the total number of files and/or
directories listed.
By default, when a symbolic link is encountered, the path that the sym-
bolic link refers to is printed after the name of the link in the for-
mat:
name -> real-path
If the `-l' option is given and the symbolic link refers to an actual
directory, then tree will follow the path of the symbolic link as if it
were a real directory.
OPTIONS
Tree understands the following command line switches:
LISTING OPTIONS
-a All files are printed. By default tree does not print hidden
files (those beginning with a dot `.'). In no event does tree
print the file system constructs `.' (current directory) and `..'
(previous directory).
-d List directories only.
-l Follows symbolic links if they point to directories, as if they
were directories. Symbolic links that will result in recursion
are avoided when detected.
-f Prints the full path prefix for each file.
-x Stay on the current file-system only. Ala find -xdev.
-L level
Max display depth of the directory tree.
-R Recursively cross down the tree each level directories (see -L
option), and at each level outputting to a file named 00Tree.html
(ala -o).
-P pattern
List only those files that match the wild-card pattern. You may
have multiple -P options. Note: you must use the -a option to
also consider those files beginning with a dot `.' for matching.
Valid wildcard operators are `*' (any zero or more characters),
`**` (any zero or more characters as well as null /'s, i.e. /**/
may match a single /), `?' (any single character), `[...]' (any
single character listed between brackets (optional - (dash) for
character range may be used: ex: [A-Z]), and `[^...]' (any single
character not listed in brackets) and `|' separates alternate
patterns. A '/' at the end of the pattern matches directories,
but not files.
-I pattern
Do not list those files that match the wild-card pattern. You
may have multiple -I options. See -P above for information on
wildcard patterns.
--gitignore
Uses git .gitignore files for filtering files and directories.
Also uses $GIT_DIR/info/exclude if present.
--gitfile[=]file
Use file explicitly as a gitignore file.
--ignore-case
If a match pattern is specified by the -P or -I option, this will
cause the pattern to match without regard to the case of each
letter.
--matchdirs
If a match pattern is specified by the -P option, this will cause
the pattern to be applied to directory names (in addition to
filenames). In the event of a match on the directory name,
matching is disabled for the directory's contents. If the --prune
option is used, empty folders that match the pattern will not be
pruned.
--metafirst
Print the meta-data information at the beginning of the line
rather than after the indentation lines.
--prune
Makes tree prune empty directories from the output, useful when
used in conjunction with -P or -I. See BUGS AND NOTES below for
more information on this option.
--info Prints file comments found in .info files. See .INFO FILES below
for more information on the format of .info files.
--infofile[=]file
Use file explicitly as a info file.
--noreport
Omits printing of the file and directory report at the end of the
tree listing.
--charset[=]charset
Set the character set to use when outputting HTML and for line
drawing.
--filelimit[=]#
Do not descend directories that contain more than # entries.
--timefmt[=]format
Prints (implies -D) and formats the date according to the format
string which uses the strftime(3) syntax.
-o filename
Send output to filename.
FILE OPTIONS
-q Print non-printable characters in filenames as question marks in-
stead of the default.
-N Print non-printable characters as is instead of as escaped octal
numbers.
-Q Quote the names of files in double quotes.
-p Print the file type and permissions for each file (as per ls -l).
-u Print the username, or UID # if no username is available, of the
file.
-g Print the group name, or GID # if no group name is available, of
the file.
-s Print the size of each file in bytes along with the name.
-h Print the size of each file but in a more human readable way,
e.g. appending a size letter for kilobytes (K), megabytes (M),
gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).
--si Like -h but use SI units (powers of 1000) instead.
--du For each directory report its size as the accumulation of sizes
of all its files and sub-directories (and their files, and so
on). The total amount of used space is also given in the final
report (like the 'du -c' command.) This option requires tree to
read the entire directory tree before emitting it, see BUGS AND
NOTES below. Implies -s.
-D Print the date of the last modification time or if -c is used,
the last status change time for the file listed.
-F Append a `/' for directories, a `=' for socket files, a `*' for
executable files, a `>' for doors (Solaris) and a `|' for FIFO's,
as per ls -F
--inodes
Prints the inode number of the file or directory
--device
Prints the device number to which the file or directory belongs
SORTING OPTIONS
-v Sort the output by version.
-t Sort the output by last modification time instead of alphabeti-
cally.
-c Sort the output by last status change instead of alphabetically.
Modifies the -D option (if used) to print the last status change
instead of modification time.
-U Do not sort. Lists files in directory order. Disables --dirs-
first.
-r Sort the output in reverse order. This is a meta-sort that al-
ters the above sorts. This option is disabled when -U is used.
--dirsfirst
List directories before files. This is a meta-sort that alters
the above sorts. This option is disabled when -U is used.
--filesfirst
List files before directories. This is a meta-sort that alters
the above sorts. This option is disabled when -U is used.
--sort[=]type
Sort the output by type instead of name. Possible values are:
ctime (-c), mtime (-t), size, version (-v) or none (-U).
GRAPHICS OPTIONS
-i Makes tree not print the indentation lines, useful when used in
conjunction with the -f option. Also removes as much whitespace
as possible when used with the -J or -X options.
-A Turn on ANSI line graphics hack when printing the indentation
lines.
-S Turn on CP437 line graphics (useful when using Linux console mode
fonts). This option is now equivalent to `--charset=IBM437' and
may eventually be depreciated.
-n Turn colorization off always, over-ridden by the -C option, how-
ever overrides CLICOLOR_FORCE if present.
-C Turn colorization on always, using built-in color defaults if the
LS_COLORS or TREE_COLORS environment variables are not set. Use-
ful to colorize output to a pipe.
XML/JSON/HTML/HYPERLINKS OPTIONS
-X Turn on XML output. Outputs the directory tree as an XML format-
ted file.
-J Turn on JSON output. Outputs the directory tree as a JSON format-
ted array.
-H [-]baseHREF
Turn on HTML output, including HTTP references. Useful for ftp
sites. baseHREF gives the base ftp location when using HTML out-
put. That is, the local directory may be `/local/ftp/pub', but it
must be referenced as `ftp://hostname.organization.domain/pub'
(baseHREF should be `ftp://hostname.organization.domain'). If
baseHREF begins with a dash (-), then the dash is removed and in-
dicates that tree should remove the first directory name from the
href URL. Hint: don't use ANSI lines with this option, and don't
give more than one directory in the directory list. If you wish
to use colors via CSS style-sheet, use the -C option in addition
to this option to force color output.
--hintro[=]file
Use file as the HTML intro in place of the default one. Use an
empty file or /dev/null to eliminate the intro altogether.
--houtro[=]file
Use file as the HTML outro in place of the default one. Use an
empty file or /dev/null to eliminate the outro altogether.
-T title
Sets the title and H1 header string in HTML output mode.
--nolinks
Turns off hyperlinks in HTML output.
--hyperlink
Enable OSC 8 terminal hyperlinks for terminals that support them.
See BUGS AND NOTES below.
--scheme[=]schema
Sets the schema used in the OSC 8 hyperlinks. The default schema
is 'file://'. If the schema omits the colon (:), then :// will
be appended to the schema.
--authority[=]hostname|authority
Sets the authority (hostname) to use for the OSC 8 hyperlinks.
By default the local hostname of the machine as returned by geth-
ostname() is used as the authority. A dot (.) or a set of ""'s,
sans '=', (i.e. the empty string) can be used to indicate a null
authority.
INPUT OPTIONS
--fromfile
Reads a directory listing from a file rather than the file-sys-
tem. Paths provided on the command line are files to read from
rather than directories to search. The dot (.) directory indi-
cates that tree should read paths from standard input. NOTE: this
is only suitable for reading the output of a program such as
find, not 'tree -fi' as symlinks are not distinguished from files
that simply contain ' -> ' as part of the filename unless the
--fflinks option is used.
--fromtabfile
Like --fromfile, tree reads a directory tree from a text file
where the files are tab indented in a tree like format to indi-
cate the directory nesting level.
--fflinks
Processes symbolic link information found in a file, as from the
output of 'tree -fi --noreport'. Only the first occurrence of
the string ' -> ' is used to denote the separation of the file-
name from the link.
MISC OPTIONS
--opt-toggle
Enables option "toggling". Turns on the ability to toggle op-
tions such as -a, -h, etc. Useful to add to an alias when you
wish to disable options enabled in the alias.
--help Outputs a verbose usage listing.
--version
Outputs the version of tree.
-- Option processing terminator. No further options will be
processed after this.
.INFO FILES
.info files are similar to .gitignore files, if a .info file is found
while scanning a directory it is read and added to a stack of .info in-
formation. Each file is composed of comments (lines starting with hash
marks (#),) or wild-card patterns which may match a file relative to the
directory the .info file is found in. If a file should match a pattern,
the tab indented comment that follows the pattern is used as the file
comment. A comment is terminated by a non-tab indented line. Multiple
patterns, each to a line, may share the same comment.
FILES
/etc/DIR_COLORS System color database.
~/.dircolors Users color database.
.gitignore Git exclusion file
$GIT_DIR/info/exclude Global git file exclusion list
.info File comment file
/usr/share/finfo/global_info Global file comment file
ENVIRONMENT
LS_COLORS Color information created by dircolors
TREE_COLORS Uses this for color information over LS_COLORS if it is
set.
TREE_CHARSET Character set for tree to use in HTML mode.
CLICOLOR Enables colorization even if TREE_COLORS or LS_COLORS is
not set.
CLICOLOR_FORCE Always enables colorization (effectively -C)
NO_COLOR Disable colorization (effectively -n) (see https://no-
color.org/)
LC_CTYPE Locale for filename output.
LC_TIME Locale for timefmt output, see strftime(3).
TZ Timezone for timefmt output, see strftime(3).
STDDATA_FD Enable the stddata feature, optionally set descriptor to
use.
AUTHOR
Steve Baker (Steve.Baker.llc@gmail.com)
HTML output hacked by Francesc Rocher (rocher@econ.udg.es)
Charsets and OS/2 support by Kyosuke Tokoro (NBG01720@nifty.ne.jp)
BUGS AND NOTES
Tree does not prune "empty" directories when the -P and -I options are
used by default. Use the --prune option.
The -h and --si options round to the nearest whole number unlike the ls
implementations which rounds up always.
Pruning files and directories with the -I, -P and --filelimit options
will lead to incorrect file/directory count reports.
The --prune and --du options cause tree to accumulate the entire tree in
memory before emitting it. For large directory trees this can cause a
significant delay in output and the use of large amounts of memory.
The timefmt expansion buffer is limited to a ridiculously large 255
characters. Output of time strings longer than this will be undefined,
but are guaranteed to not exceed 255 characters.
XML/JSON trees are not colored, which is a bit of a shame. The jq util-
ity can colorize the JSON however, just not the filenames by file-type
ala LS_COLORS.
OSC 8 hyperlinks may be poorly supported by your terminal. For my ver-
sion of Konsole it is necessary to set the schema to file: (no //) and
use a null authority. It may also be necessary to spend 3.5 hours find-
ing the option to turn on hyperlinks.
Probably more.
As of version 2.0.0, in Linux, tree will attempt to automatically output
a compact JSON tree on file descriptor 3 (what I call stddata,) if
present and the environment variable STDDATA_FD is defined or set to a
positive non-zero file descriptor value to use to output on. It is
hoped that some day a better Linux/Unix shell may take advantage of this
feature, though BSON would probably be a better format for this.
SEE ALSO
dircolors(1), ls(1), find(1), du(1), jq(1), strftime(3), gitignore(5)
Tree 2.2.1 TREE(1)
Generated by dwww version 1.16 on Tue Dec 16 06:22:08 CET 2025.