Table of Contents
Ubuntu - Bash - Scripts - tree
tree recursively searches in each directory and finds all files, which are then displayed in a hierarchical file tree, thus providing global inspection of files and their nested depth structure.
Usage
tree [dir]
Example call:
tree $HOME
Code
#!/bin/bash # # @ (#) tree v1.0 Visual display of a file tree # output to a file tree structure screen # if [ "$#" -gt 1] then echo "tree: wrong arg count"> & 2 echo "usage: tree [dir]"> & 2 exit 2 fi if [ "$#" -eq 1] then if [! -d $1] then echo "$0: $1 not a directory"> & 2 echo "usage: tree [dir]"> & 2 exit 2 fi fi find $ {1: -.} -print | sort | sed -e "1p" -e "1d" \ -e "s | [^ /] * / | / | g" \ -e "s | [^ * / | / |" \ -e "s | / \ ([^ /] * \) $ | \ 1 |"
Example Usage
This uses an implicit directory (the current directory) as the beginning of the file tree.
tree
Print the tree listing for each file of the entire system.
tree /
This shows the tree-format for all other users system (assuming that all user directories are the same directory, such as /usr/*).
tree $HOME / ..
Test
Consider the example of a directory structure. Let the root directory to /tmp with two directories: a and b. The catalog is a subdirectories log aa, which contains the file1 file directory and b, respectively, subdirectory bb, containing file file2.
The find command will give a printout like this:
find /tmp -print
result:
/tmp /tmp/a /tmp/a/aa /tmp/a/aa/file1 /tmp/b /tmp/b/bb /tmp/b/bb/file2
As can be seen from this listing, the files a and aa are directories and file file1 is located at the bottom of the file tree.
Now compare this result with the results of the tree script.
tree /tmp
result:
/tmp /a //aa ///file1 /b //bb ///file2