99 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/ksh
 | 
						|
#
 | 
						|
# 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 ;;
 | 
						|
	*) 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
 |