100 lines
1.8 KiB
Bash
100 lines
1.8 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Name: dirtree
|
|
# Programmer:
|
|
# Hemant T. Shah
|
|
# Life Insurance Data Processing
|
|
# July 12 1994
|
|
#
|
|
# Description:
|
|
# Print directory tree structure as follows:
|
|
# |___Mail
|
|
# |___scheduler
|
|
# |___cics_scripts
|
|
# |___tar_msdos
|
|
# |___awk
|
|
# |___attributes
|
|
# |___tmp
|
|
# |___News
|
|
# |___dosscsi
|
|
# |___FAQ_xterminal
|
|
# |___shell_history.Z
|
|
# |___FAQ_AIX
|
|
# |___aix_ftp_site
|
|
# |___hp_software
|
|
# |___dnload
|
|
# |___telnet.h
|
|
# |___msdos
|
|
# |___tnetd.tar.Z
|
|
# |___aix
|
|
# |___hp
|
|
# |___xkey.c
|
|
#
|
|
# Conversion to bash v2 syntax done by Chet Ramey
|
|
# - removed command substitutions calling `basename'
|
|
#
|
|
|
|
ProgramName=${0##*/}
|
|
Path="."
|
|
ShowAll=1
|
|
ShowDir=0
|
|
|
|
|
|
ExpandDirectory()
|
|
{
|
|
local object # Local variable
|
|
|
|
cd "$1"
|
|
|
|
for object in $PWD/.??* $PWD/*
|
|
do
|
|
if [ -d $object ]; # It is a directory
|
|
then
|
|
echo "${indent}|___${object##*/}/"
|
|
indent="${indent}! " # Add to indentation
|
|
if [ -x $object ];
|
|
then
|
|
ExpandDirectory $object
|
|
fi
|
|
indent=${indent%????} # Remove from indentation
|
|
elif [ -e $object ]; then
|
|
if (( ShowAll == 1 ));
|
|
then
|
|
echo "${indent}|___${object##*/}"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
}
|
|
|
|
usage()
|
|
{
|
|
echo -e "Usage: $ProgramName [-h] [-f] [-d] [path] "
|
|
echo -e "\t-h ... display this help message."
|
|
echo -e "\t-f path ... shows all files and directories below path (default)."
|
|
echo -e "\t-d path ... shows all directories only below path."
|
|
}
|
|
|
|
while getopts "fd" opt
|
|
do
|
|
case $opt in
|
|
f) ShowAll=1 ;;
|
|
#d) ShowDir=1 ;;
|
|
d) ShowAll=0 ;;
|
|
*) usage ; exit 2;;
|
|
esac
|
|
done
|
|
|
|
shift $(( $OPTIND - 1 ))
|
|
|
|
Path=${1:-.}
|
|
|
|
if [ ! -d "$Path" ]; then
|
|
echo "$0: error: specified path is not a directory." >&2
|
|
exit 1
|
|
fi
|
|
|
|
|
|
|
|
echo "!$Path/"
|
|
ExpandDirectory $Path
|