diff options
Diffstat (limited to 'examples/scripts.v2/newext')
-rw-r--r-- | examples/scripts.v2/newext | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/examples/scripts.v2/newext b/examples/scripts.v2/newext new file mode 100644 index 0000000..37645bd --- /dev/null +++ b/examples/scripts.v2/newext @@ -0,0 +1,64 @@ +#! /bin/bash +# +# original from: +# newext: change filename extension +# @(#) newext.sh 1.1 93/04/13 +# 90/06/06 john h. dubois iii (john@armory.com) +# 90/11/14 changed ksh-specific code to hybrid: if running under Bourne, +# uses expr instead of ksh builtin ops. Removed SYSV specific code. +# 91/08/06 added -t option +# 92/11/06 made earlier code actually work! +# 93/04/13 If no filenames given, act on files in current dir +# +# conversion to bash v2 syntax by Chet Ramey + +usage="Usage: newext [-th] <oldext> <newext> [filename ...]" + +phelp() +{ +echo "$usage +Rename all given files that end in oldext with newext replacing oldext. +If no filenames are given, all files in the current directory that end +in oldext are acted on (no filename is equivalent to '*'). +Options: +-h: Print this help. +-t: Test: No action is taken except to print the mv commands that would +be executed if -t was not given." +} + +while getopts "th" opt; do + case "$opt" in + t) echo=echo;; + h) phelp; exit 0;; + *) echo "$usage" 1>&2; exit 2;; + esac +done + +shift $((OPTIND - 1)) + +oldext=$1 +newext=$2 + +case $# in +[01]) echo -e "$usage\nUse -h for help." 1>&2; exit 2;; +2) shift ; shift; set -- *;; +*) shift ; shift;; +esac + +found= + +for file +do + case "$file" in + *$oldext) + newname="${file%$oldext}$newext" + $echo mv "$file" "$newname" + found=true;; + esac +done + +if [ -z "$found" ]; then + echo "No files ending in \"$oldext\"." + exit 1 +fi +exit 0 |