Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, February 9, 2022

tree (1)


tree - like format.


tree  [-acdfghilnpqrstuvxACDFQNSUX]  [-L  level [-R]] [-H baseHREF] [-T
title] [-o filename] [--nolinks] [-P pattern] [-I  pattern]  [--inodes]
[--device] [--noreport] [--dirsfirst] [--version] [--help] [--filelimit
#]  [--si]  [--prune]  [--du]  [--timefmt  format]  [--matchdirs]  [--]
[directory ...]


TREE(1)                     General Commands Manual                    TREE(1)

       tree - list contents of directories in a tree-like format.

       tree  [-acdfghilnpqrstuvxACDFQNSUX]  [-L  level [-R]] [-H baseHREF] [-T
       title] [-o filename] [--nolinks] [-P pattern] [-I  pattern]  [--inodes]
       [--device] [--noreport] [--dirsfirst] [--version] [--help] [--filelimit
       #]  [--si]  [--prune]  [--du]  [--timefmt  format]  [--matchdirs]  [--]
       [directory ...]

       Tree  is  a  recursive  directory listing program that produces a depth
       indented listing of files, which is  colorized  ala  dircolors  if  the
       LS_COLORS  environment  variable  is set and output is to tty.  With no
       arguments, tree lists the files in the current directory.  When  direc-
       tory  arguments  are given, tree lists all the files and/or directories
       found in the given directories each in turn.  Upon completion of  list-
       ing 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-

           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.

       Tree understands the following command line switches:

       -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 of  them  execute  tree  again  adding  `-o
              00Tree.html' as a new option.

       -P pattern
              List  only  those files that match the wild-card pattern.  Note:
              you must use the -a option to also consider those  files  begin-
              ning with a dot `.'  for matching.  Valid wildcard operators are
              `*' (any zero or more characters), `?' (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.

       -I pattern
              Do not list those files that match the wild-card pattern.

        .TP --ignore-case If a match pattern is specified  by  the  -P  or  -I
       option,  this  will  cause  the pattern to match without regards to the
       case of each letter.

              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.

              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.

              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

       --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.

       -q     Print non-printable characters in filenames  as  question  marks
              instead of the default.

       -N     Print non-printable characters as is instead of as escaped octal

       -Q     Quote the names of files in double quotes.

       -p     Print the file type and permissions for each  file  (as  per  ls

       -u     Print the username, or UID # if no username is available, of the

       -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

              Prints the inode number of the file or directory

              Prints the device number to which the file or directory belongs

       -v     Sort the output by version.

       -t     Sort  the output by last modification time instead of alphabeti-

       -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-

       -r     Sort  the  output  in  reverse  order.  This is a meta-sort that
              alter the above sorts.  This option is disabled when -U is used.

              List directories before files. This is a meta-sort  that  alters
              the above sorts.  This option is disabled when -U is used.

              Sort the output by name (as per ls): name (default), ctime (-c),
              mtime (-t), size or version (-v).

       -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

       -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.

       -C     Turn  colorization  on  always, using built-in color defaults if
              the LS_COLORS environment variable is not set.  Useful  to  col-
              orize output to a pipe.

       -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 an JSON  for-
              matted array.

       -H baseHREF
              Turn  on  HTML output, including HTTP references. Useful for ftp
              sites.  baseHREF gives the base ftp  location  when  using  HTML
              output.  That  is,  the local directory may be `/local/ftp/pub',
              but  it  must   be   referenced   as   `ftp://hostname.organiza-
              tion.domain/pub'  (baseHREF  should be `ftp://hostname.organiza-
              tion.domain'). 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 CCS style-sheet, use  the  -C  option  in
              addition to this option to force color output.

       -T title
              Sets the title and H1 header string in HTML output mode.

              Turns off hyperlinks in HTML output.

       --help Outputs a verbose usage listing.

              Outputs the version of tree.

       --     Option  processing  terminator.  No further options will be pro-
              cessed after this.

       /etc/DIR_COLORS          System color database.
       ~/.dircolors        Users color database.

       LS_COLORS      Color information created by dircolors
       TREE_COLORS    Uses this for color information over LS_COLORS if it  is
       TREE_CHARSET   Character set for tree to use in HTML mode.
       LC_CTYPE       Locale for filename output.
       LC_TIME        Locale for timefmt output, see strftime(3).
       TZ             Timezone for timefmt output, see strftime(3).

       Steve Baker (ice@mama.indstate.edu)
       HTML output hacked by Francesc Rocher (rocher@econ.udg.es)
       Charsets and OS/2 support by Kyosuke Tokoro (NBG01720@nifty.ne.jp)

       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.

       Probably more.

       See attributes(7) for descriptions of the following attributes:

       |Availability   | file/tree        |
       |Stability      | Uncommitted      |

       dircolors(1), ls(1), find(1), du(1), strftime(3)

       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source       was        downloaded        from         http://mama.ind-

       Further information about this software can be found on the open source
       community website at http://mama.indstate.edu/users/ice/tree/.

Tree 1.7.0                                                             TREE(1)