dwww Home | Manual pages | Find package

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.