1#!/bin/bash
2#
3# Name: dirtree
4# Programmer:
5#            Hemant T. Shah
6#            Life Insurance Data Processing
7#            July 12 1994
8#
9# Description:
10#  Print directory tree structure as follows:
11#   |___Mail
12#     |___scheduler
13#     |___cics_scripts
14#     |___tar_msdos
15#     |___awk
16#     |___attributes
17#   |___tmp
18#   |___News
19#     |___dosscsi
20#     |___FAQ_xterminal
21#     |___shell_history.Z
22#     |___FAQ_AIX
23#     |___aix_ftp_site
24#     |___hp_software
25#   |___dnload
26#     |___telnet.h
27#     |___msdos
28#     |___tnetd.tar.Z
29#     |___aix
30#     |___hp
31#   |___xkey.c
32#
33# Conversion to bash v2 syntax done by Chet Ramey
34#	- removed command substitutions calling `basename'
35#
36
37ProgramName=${0##*/}
38Path="."
39ShowAll=1
40ShowDir=0
41
42
43ExpandDirectory()
44{
45local object   # Local variable
46
47cd "$1"
48
49for object in $PWD/.??* $PWD/*
50do
51   if [ -d $object ];  # It is a directory
52   then
53      echo "${indent}|___${object##*/}/"
54      indent="${indent}!   "   # Add to indentation
55      if [ -x $object ];
56      then
57         ExpandDirectory $object
58      fi
59      indent=${indent%????}    # Remove from indentation
60   elif [ -e $object ]; then
61      if (( ShowAll == 1 ));
62      then
63         echo "${indent}|___${object##*/}"
64      fi
65   fi
66done
67
68}
69
70usage()
71{
72	echo -e "Usage: $ProgramName [-h] [-f] [-d] [path] "
73	echo -e "\t-h       ... display this help message."
74	echo -e "\t-f path  ... shows all files and directories below path (default)."
75	echo -e "\t-d path  ... shows all directories only below path."
76}
77
78while getopts "fd" opt
79do
80	case $opt in
81	f) ShowAll=1 ;;
82	#d) ShowDir=1 ;;
83	d) ShowAll=0 ;;
84	*) usage ; exit 2;;
85	esac
86done
87
88shift $(( $OPTIND - 1 ))
89
90Path=${1:-.}
91
92if [ ! -d "$Path" ]; then
93	echo "$0: error: specified path is not a directory." >&2
94	exit 1
95fi
96
97
98
99echo "!$Path/"
100ExpandDirectory $Path
101