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
 | 
