Display directory tree using text or JSON output.

This command-line utility is not installed by default.

$ tree
Command 'tree' not found, but can be installed with:
sudo snap install tree  # version 1.8.0+pkg-3fd6, or
sudo apt  install tree  # version 2.0.2-1
See 'snap info tree' for additional versions.

Install tree package.

$ sudo apt install tree

Display usage information.

$ tree --help
usage: tree [-acdfghilnpqrstuvxACDFJQNSUX] [-L level [-R]] [-H  baseHREF]
	[-T title] [-o filename] [-P pattern] [-I pattern] [--gitignore]
	[--matchdirs] [--metafirst] [--ignore-case] [--nolinks] [--inodes]
	[--device] [--sort[=]] [--dirsfirst] [--filesfirst]
	[--filelimit #] [--si] [--du] [--prune] [--charset X]
	[--timefmt[=]format] [--fromfile] [--noreport] [--version] [--help]
	[--] [directory ...]
  ------- Listing options -------
  -a            All files are listed.
  -d            List directories only.
  -l            Follow symbolic links like directories.
  -f            Print the full path prefix for each file.
  -x            Stay on current filesystem only.
  -L level      Descend only level directories deep.
  -R            Rerun tree when max dir level reached.
  -P pattern    List only those files that match the pattern given.
  -I pattern    Do not list files that match the given pattern.
  --gitignore   Filter by using .gitignore files.
  --ignore-case Ignore case when pattern matching.
  --matchdirs   Include directory names in -P pattern matching.
  --metafirst   Print meta-data at the beginning of each line.
  --info        Print information about files found in .info files.
  --noreport    Turn off file/directory count at end of tree listing.
  --charset X   Use charset X for terminal/HTML and indentation line output.
  --filelimit # Do not descend dirs with more than # files in them.
  -o filename   Output to file instead of stdout.
  ------- File options -------
  -q            Print non-printable characters as '?'.
  -N            Print non-printable characters as is.
  -Q            Quote filenames with double quotes.
  -p            Print the protections for each file.
  -u            Displays file owner or UID number.
  -g            Displays file group owner or GID number.
  -s            Print the size in bytes of each file.
  -h            Print the size in a more human readable way.
  --si          Like -h, but use in SI units (powers of 1000).
  -D            Print the date of last modification or (-c) status change.
  --timefmt  Print and format time according to the format .
  -F            Appends '/', '=', '*', '@', '|' or '>' as per ls -F.
  --inodes      Print inode number of each file.
  --device      Print device ID number to which each file belongs.
  ------- Sorting options -------
  -v            Sort files alphanumerically by version.
  -t            Sort files by last modification time.
  -c            Sort files by last status change time.
  -U            Leave files unsorted.
  -r            Reverse the order of the sort.
  --dirsfirst   List directories before files (-U disables).
  --filesfirst  List files before directories (-U disables).
  --sort X      Select sort: name,version,size,mtime,ctime.
  ------- Graphics options -------
  -i            Don't print indentation lines.
  -A            Print ANSI lines graphic indentation lines.
  -S            Print with CP437 (console) graphics indentation lines.
  -n            Turn colorization off always (-C overrides).
  -C            Turn colorization on always.
  ------- XML/HTML/JSON options -------
  -X            Prints out an XML representation of the tree.
  -J            Prints out an JSON representation of the tree.
  -H baseHREF   Prints out HTML format with baseHREF as top directory.
  -T string     Replace the default HTML title and H1 header with string.
  --nolinks     Turn off hyperlinks in HTML output.
  ------- Input options -------
  --fromfile    Reads paths from files (.=stdin)
  ------- Miscellaneous options -------
  --version     Print version and exit.
  --help        Print usage and this help message and exit.
  --            Options processing terminator.

Display directory tree.

$ tree config
config
|-- _default
|   `-- config.yml
|-- code-server-development
|   `-- config.yml
`-- production
    `-- config.yml

3 directories, 3 files

Display directory tree without files.

$ tree -d config
config
|-- _default
|-- code-server-development
`-- production

3 directories

Display directory tree two level deep.

$ tree -L 2 static/wp-content
static/wp-content
`-- uploads
    |-- 2010
    |-- 2011
    |-- 2012
    |-- 2013
    |-- 2014
    |-- 2015
    |-- 2016
    |-- 2017
    |-- 2018
    |-- 2019
    |-- 2020
    |-- 2021
    |-- 2022
    |-- 2023
    |-- wc-logs
    |-- woocommerce-placeholder.png
    `-- woocommerce_uploads

17 directories, 1 file

Display directory tree without summary report.

$ tree  --noreport static/wp-content/uploads/2023/
static/wp-content/uploads/2023/
|-- code-server-ports.png
|-- code-server.png
|-- code-server_release.png
|-- forgejo.png
`-- lighthouse.png

Display directory tree including file details using JSON output format.

$ tree --noreport -f -u -g -s -h -i -p -J config | jq .
[
  {
    "type": "directory",
    "name": "config",
    "mode": "0775",
    "prot": "drwxrwxr-x",
    "user": "milosz",
    "group": "milosz",
    "size": "4.0K",
    "contents": [
      {
        "type": "directory",
        "name": "config/_default",
        "mode": "0775",
        "prot": "drwxrwxr-x",
        "user": "milosz",
        "group": "milosz",
        "size": "4.0K",
        "contents": [
          {
            "type": "file",
            "name": "config/_default/config.yml",
            "mode": "0664",
            "prot": "-rw-rw-r--",
            "user": "milosz",
            "group": "milosz",
            "size": "3.7K"
          }
        ]
      },
      {
        "type": "directory",
        "name": "config/code-server-development",
        "mode": "0775",
        "prot": "drwxrwxr-x",
        "user": "milosz",
        "group": "milosz",
        "size": "4.0K",
        "contents": [
          {
            "type": "file",
            "name": "config/code-server-development/config.yml",
            "mode": "0664",
            "prot": "-rw-rw-r--",
            "user": "milosz",
            "group": "milosz",
            "size": "19"
          }
        ]
      },
      {
        "type": "directory",
        "name": "config/production",
        "mode": "0775",
        "prot": "drwxrwxr-x",
        "user": "milosz",
        "group": "milosz",
        "size": "4.0K",
        "contents": [
          {
            "type": "file",
            "name": "config/production/config.yml",
            "mode": "0664",
            "prot": "-rw-rw-r--",
            "user": "milosz",
            "group": "milosz",
            "size": "3.7K"
          }
        ]
      }
    ]
  }
]
ko-fi