Question: MUST ONLY BE IN KSH!!!!!! modify the script student-example-p3 following the instructions in the script. The purpose of this script is to change the name

MUST ONLY BE IN KSH!!!!!!

modify the script student-example-p3 following the instructions in the script.

The purpose of this script is to change the name of files/directories with spaces in the name to be dashes instead of spaces. So, if a file/directory were named "A B", the new name would be A-B. 
The script will work on a directory specified on the command line and replace the spaces in the names for all files/directories underneath that directory. 
The options to the script are as follows: -f 
 -d Both -d and and -f may be specifed.  the name of the directory that you will be processing. 

For example: Given the following $ ls C D/ dirs.tar fix-spaces* And the directory "C D" contained the following structure ./C D ./C D/E F ./C D/E F/G H ./C D/E F/G H/J ./C D/E F/G H/J ./C D/E F/G H/a b ./C D/E F/a b ./C D/a b After the script was run, fix-space -f -d "C D" the directory structure would be as follows: C-D C-D/E-F C-D/E-F/G-H C-D/E-F/G-H/a-b C-D/E-F/G-H/J----K C-D/E-F/G-H/J----K/a-b C-D/E-F/a-b C-D/a-b

Here is a copy of the script - it is also as an attachment in both UNIX and Windows format. 
the -f says to only rename files 
the -d says to only rename directories 

K K/a b

#!/usr/bin/ksh 
USAGE="$0 -f directory $0 -d directory $0 -d -f directory 
-f rename files -d rename directories " 

usage ()

{print -u2 "$USAGE" exit 1 }

pathname ()

{# function provided for the student # if you change this to echo, remove the -- print -- "${1%/*}" }

basename ()

 {# function provided for the student # if you change this to echo, remove the -- print -- "${1##*/}" } 

find_dirs ()

{# function provided for the student find "$1" -depth -type d -name '* *' -print }

find_files () 

{# function provided for the student find "$1" -depth -type f -name '* *' -print }

my_rename() {# the student must implement this function to my_rename

# $1 to $2 # The following error checking must happen: # 1. check if the directory where $1 resided is 
writeable, # if not then report an error # 2. check if "$2" exists -if it does report and error 
and don't # do the mv command # 3. check the status of the mv command and report any 

errors

 : # remove this line after the function is coded } 

fix_dirs ()

{# The student must implement this function # to actually call the my_rename funtion to # change the name of the directory from having spaces to # changing all of the spaces to -'s # if the name were "a b", the new name would be a-b # if the name were "a b" the new name would be a----b

 : # remove this line after the function is coded } 

fix_files ()

{# The student must implement this function # to actually call the my_rename funtion to # change the name of the file from having spaces to # changing all of the spaces to -'s # if the name were "a b", the new name would be a-b # if the name were "a b" the new name would be a----b

 : # remove this line after the function is coded } 
WFILE= WDIR= DIR= 
if [ "$#" -eq 0 ] then 

usage fi

while [ $# -gt 0 ] do 

case $1 in

 -d) WDIR=1 -f) ;; 
 WFILE=1 -*) ;; 

usage

;; *)

 if [ -d "$1" ] then 
 elseDIR="$1" 
 print -u2 "$1 does not exist ..." exit 1 fi 
 ;; esac shift done 
# The student must implement the following: # - if the directory was not specified, the script should # print a message and exit 
# - if the Directory specified is the current directory, the script # print a error message and exit 
# - if the directory specified is . or .. the script should print # an error message and exit 
# - if both -f and -d are not specified, the script should print 

a# message and exit #

if [ "$WDIR" -a "$WFILE" ] then 
 fix_files "$DIR" 
 fix_dirs "$DIR" elif [ "$WDIR" ] 

then

 fix_dirs "$DIR" elif [ "$WFILE" ] 
then fix_files "$DIR" fi 

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!