Linux: HowTo See Directory Tree Structure

by on January 21, 2011 · 2 comments· LAST UPDATED November 24, 2012

in

How do list contents of directories in a structure like format under Linux operating systems?

Tutorial details
DifficultyEasy (rss)
Root privilegesYes/No
Requirementstree
Estimated completion timeN/A

You need to use command called tree. It will list contents of directories in a tree-like format. It is a recursive directory listing program that produces a depth indented listing of files.

Installation

By default the tree command is not installed. Type the following command to install the same under RHEL / CentOS / Fedora Linux:
# yum install tree
If you are using Debian / Mint / Ubuntu Linux, type the following command to install the tree command:
$ sudo apt-get install tree

Syntax

The syntax is:

 
tree
tree /path/to/directory
tree [options]
tree [options] /path/to/directory
 

To list contents of /etc in a tree-like format:

 
tree /etc
 

Sample outputs:

etc
|-- abrt
|   |-- abrt-action-save-package-data.conf
|   |-- abrt.conf
|   |-- gpg_keys
|   `-- plugins
|       |-- CCpp.conf
|       `-- python.conf
|-- acpi
|   |-- actions
|   |   `-- power.sh
|   `-- events
|       |-- power.conf
|       `-- video.conf
|-- adjtime
|-- aliases
|-- aliases.db
|-- alsa
|   `-- alsactl.conf
|-- alternatives
|   |-- links -> /usr/bin/elinks
|   |-- links-man -> /usr/share/man/man1/elinks.1.gz
|   |-- mta -> /usr/sbin/sendmail.postfix
|   |-- mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz
|   |-- mta-mailq -> /usr/bin/mailq.postfix
|   |-- mta-mailqman -> /usr/share/man/man1/mailq.postfix.1.gz
|   |-- mta-newaliases -> /usr/bin/newaliases.postfix
|   |-- mta-newaliasesman -> /usr/share/man/man1/newaliases.postfix.1.gz
|   |-- mta-pam -> /etc/pam.d/smtp.postfix
|   |-- mta-rmail -> /usr/bin/rmail.postfix
|   |-- mta-sendmail -> /usr/lib/sendmail.postfix
|   `-- mta-sendmailman -> /usr/share/man/man1/sendmail.postfix.1.gz
|-- anacrontab
|-- asound.conf
|-- at.deny
|-- audisp
|   |-- audispd.conf
|   `-- plugins.d
|       |-- af_unix.conf
|       |-- sedispatch.conf
|       `-- syslog.conf
|-- audit
|   |-- auditd.conf
....
..
..
|-- xinetd.d
|   `-- rsync
|-- xml
|   `-- catalog
|-- yum
|   |-- pluginconf.d
|   |   |-- product-id.conf
|   |   |-- protectbase.conf
|   |   |-- rhnplugin.conf
|   |   `-- subscription-manager.conf
|   |-- protected.d
|   |-- vars
|   `-- version-groups.conf
|-- yum.conf
`-- yum.repos.d
    |-- epel.repo
    |-- epel-testing.repo
    |-- ksplice-uptrack.repo
    |-- redhat.repo
    `-- rhel-source.repo
208 directories, 1452 files

The -a option should be passed to see all files. 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).:

 
tree -a
 

To list directories only, run:

 
tree -d
 

Pass the -C option to see colorized output, using built-in color defaults:

 
tree -C
 

Sample outputs:

Fig.01: Linux tree Command To  Display Structure of Directory Hierarchy

Fig.01: Linux tree Command To Display Structure of Directory Hierarchy


Here is a list of all options supported by the tree program:

  -a            All files are listed.
  -d            List directories only.
  -l            Follow symbolic links like directories.
  -f            Print the full path prefix for each file.
  -i            Don't print indentation lines.
  -q            Print non-printable characters as '?'.
  -N            Print non-printable characters as is.
  -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.
  -D            Print the date of last modification.
  -F            Appends '/', '=', '*', or '|' as per ls -F.
  -v            Sort files alphanumerically by version.
  -r            Sort files in reverse alphanumeric order.
  -t            Sort files by last modification time.
  -x            Stay on current filesystem only.
  -L level      Descend only level directories deep.
  -A            Print ANSI lines graphic indentation lines.
  -S            Print with ASCII graphics indentation lines.
  -n            Turn colorization off always (-C overrides).
  -C            Turn colorization on always.
  -P pattern    List only those files that match the pattern given.
  -I pattern    Do not list files that match the given pattern.
  -H baseHREF   Prints out HTML format with baseHREF as top directory.
  -T string     Replace the default HTML title and H1 header with string.
  -R            Rerun tree when max dir level reached.
  -o file       Output to file instead of stdout.
  --inodes      Print inode number of each file.
  --device      Print device ID number to which each file belongs.
  --noreport    Turn off file/directory count at end of tree listing.
  --nolinks     Turn off hyperlinks in HTML output.
  --dirsfirst   List directories before files.
  --charset X   Use charset X for HTML and indentation line output.
  --filelimit # Do not descend dirs with more than # files in them.
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 2 comments… read them below or add one }

1 Harisankar P S October 2, 2013 at 7:37 am

Good tool for easy debugging.

Reply

2 Anil January 23, 2014 at 6:29 am

it is very usefull for me

Reply

Leave a Comment

Tagged as: , , , , , ,

Previous Faq:

Next Faq: