diff options
Diffstat (limited to 'examples/scripts.v2/rename')
-rw-r--r-- | examples/scripts.v2/rename | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/examples/scripts.v2/rename b/examples/scripts.v2/rename deleted file mode 100644 index 96c46d68..00000000 --- a/examples/scripts.v2/rename +++ /dev/null @@ -1,122 +0,0 @@ -#! /bin/bash -# -# original from: -# @(#) rename.ksh 1.1 94/05/10 -# 90/06/01 John DuBois (spcecdt@armory.com) -# 91/02/25 Improved help info -# 92/06/07 remove quotes from around shell pattern as required by new ksh -# 94/05/10 Exit if no globbing chars given. -# -# conversion to bash v2 syntax by Chet Ramey - -phelp() -{ -echo "$usage -All files that match oldpattern will be renamed with the -filename components that match the constant parts of oldpattern -changed to the corresponding constant parts of newpattern. -The components of the filename that match variable parts of -oldpattern will be preserved. Variable parts in oldpattern -must occur in the same order in newpattern. Variables parts -can be '?' and '*'. -Example: -rename \"/tmp/foo*.ba.?\" \"/tmp/new*x?\" -All files in /tmp that match foo*.ba.? will have the \"foo\" part -replaced by \"new\" and the \".ba.\" part replaced by \"x\"." -} - -usage="usage: $name [-htv] oldpattern newpattern" -name=${0##/} - -while getopts "htv" opt; do - case "$opt" in - t) tell=true;; - v) verbose=true;; - h) phelp; exit 0;; - *) echo "$name: $usage" 1>&2; exit 2;; - esac -done -shift $((OPTIND - 1)) - -if [ $# -lt 2 ]; then - phelp - exit 2 -fi - -oldpat=$1 -newpat=$2 - -set -- $1 -if [ ! -e "$1" ]; then - echo "$name: no files match $oldpat." - exit 1 -fi - -typeset -i i=1 j - -# Example oldpat: foo*.a -# Example newpat: bar*.b - -# Examples given for first iteration (in the example, the only interation) -while :; do - case "$oldpat" in - *[\*\?]*) ;; - *) break;; - esac - - # Get leftmost globbing pattern in oldpat - pat=${oldpat#*[\*\?]} # pat=.a - pat=${oldpat%%"$pat"} # pat=foo* - pat=${pat##*[!\?\*]} # pat=* - # Find parts before & after pattern - oldpre[i]=${oldpat%%"$pat"*} # oldpre[1]=foo - oldsuf[i]=${oldpat#*"$pat"} # oldsuf[1]=.a - newpre[i]=${newpat%%"$pat"*} # newpre[1]=bar - # Get rid of processed part of patterns - oldpat=${oldpat#${oldpre[i]}"$pat"} # oldpat=.a - newpat=${newpat#${newpre[i]}"$pat"} # newpat=.b - let i=i+1 -done - -if [ $i -eq 1 ]; then - echo "No globbing chars in pattern." 1>&2 - exit 1 -fi - -oldpre[i]=${oldpat%%"$pat"*} # oldpre[2]=.a -oldsuf[i]=${oldpat#*"$pat"} # oldsuf[2]=.a -newpre[i]=${newpat%%"$pat"*} # newpre[2]=.b - -if [ -n "$verbose" ]; then - j=1 - while let "j < i"; do - echo \ -"Old prefix: ${oldpre[j]} Old suffix: ${oldsuf[j]} New prefix: ${newpre[j]}" - let j=j+1 - done -fi - -# Example file: foox.a - -for file; do - j=1 - origname=$file # origname=foox.a - newfile= - while let "j <= i"; do - # Peel off a prefix interation 1 2 - file=${file#${oldpre[j]}} # file=x.a file= - # Save the part of this prefix that is to be retained - const=${file%${oldsuf[j]}} # const=x const= - newfile=$newfile${newpre[j]}$const # newfile=barx newfile=barx.b - file=${file#$const} # file=.a file=.a - let j=j+1 - done - if [ -n "$tell" ]; then - echo "Would move \"$origname\" to \"$newfile\"." - else - if [ -n "$verbose" ]; then - echo "Moving \"$origname\" to \"$newfile\"." - fi - mv $origname $newfile - fi -done |