]> git.ipfire.org Git - thirdparty/bash.git/blame - examples/scripts/vtree3a
Bash-4.2 patch 45
[thirdparty/bash.git] / examples / scripts / vtree3a
CommitLineData
bb70624e
JA
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