Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
TREE(1)			    General Commands Manual		       TREE(1)

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

       tree  [-acdfghilnpqrstuvxACDFJQNSUX]  [-L level [-R]] [-H baseHREF] [-T
       title]  [-o  filename]  [-P   pattern]	[-I   pattern]	 [--gitignore]
       [--matchdirs]   [--metafirst]  [--ignore-case]  [--nolinks]  [--inodes]
       [--device] [--sort[=]name] [--dirsfirst]	[--filesfirst] [--filelimit #]
       [--si]  [--du]  [--prune]  [--timefmt[=]format]	[--fromfile]  [--info]
       [--noreport] [--version]	[--help] [--] [directory ...]

       Tree is a recursive directory listing program that produces a depth in-
       dented  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.  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 sin-
	      gle character not	listed in brackets) and	`|'  separates	alter-
	      nate  patterns. A	'/' at the end of the pattern matches directo-
	      ries, 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.

	      Uses git .gitignore files	for filtering files  and  directories.
	      Also uses	$GIT_DIR/info/exclude if present.

	      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.

	      Print the	meta-data information at the  beginning	 of  the  line
	      rather than after	the indentation	lines.

	      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 be-
	      low for more information on the format of	.info files.

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

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

	      Sort  the	 output	 by type instead of name. Possible values are:
	      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, 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.
	      Useful to	colorize 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 a 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 `
	      main/pub'	(baseHREF should  be  `
	      main').  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.

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

	      Turns off	hyperlinks in HTML output.

       --fromfile Reads	a directory listing from a file	rather than the	 file-
       system.	 Paths	provided  on  the  command line	are files to read from
       rather than directories to search.  The	dot  (.)  directory  indicates
       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 cannot (at least as yet) be distinguished from files
       that simply contain ' ->	' as part of the filename.

       --help Outputs a	verbose	usage listing.

	      Outputs the version of tree.

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

       .info  files are	similiar 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.

       /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

       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.
       CLICOLOR	      Enables colorization even	if TREE_COLORS or LS_COLORS is
       not set.
       CLICOLOR_FORCE Always enables colorization (effectively -C)
       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 (
       HTML output hacked by Francesc Rocher (
       Charsets	and OS/2 support by Kyosuke Tokoro (

       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.

       As  of version 2.0.0, in	Linux, tree will attempt to automatically out-
       put a compact JSON tree on file descriptor 3 (what I call stddata,)  if
       present.	  It is	hoped that some	day a better Linux/Unix	shell may take
       advantage of this feature, though BSON would probably be	a better  for-
       mat for this.

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

Tree 2.0.0							       TREE(1)


Want to link to this manual page? Use this URL:

home | help