94 lines
1.7 KiB
Bash
Executable File
94 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
#
|
|
# 1994 (c) Regents of McGill University, School of Computer Science.
|
|
# by Luc Boulianne (lucb@cs.mcgill.ca)
|
|
#
|
|
|
|
usage () {
|
|
cat - <<EOC
|
|
|
|
Usage: $0 [-h] [-v] files.[0-9]
|
|
|
|
Interactively, unrotate a group of files in the current directory. You must
|
|
supply only one copy of the filename group you want to unrotate. If you
|
|
don't, a set of files will be unrotated twice.
|
|
|
|
Options:
|
|
[-v] set debugging on
|
|
[-h] this help info
|
|
|
|
EOC
|
|
|
|
exit 2
|
|
}
|
|
|
|
# parse the command line arguments:
|
|
#
|
|
if [ $# -gt 0 ] ; then
|
|
case $1 in
|
|
-v) debug="y" ; shift;;
|
|
-h) usage;; # call the usage funtion
|
|
-*) # Catch anything that doesn't match the
|
|
# previous flags
|
|
echo "Unknown option [$1]";
|
|
usage;;
|
|
esac
|
|
fi
|
|
|
|
MV=/bin/mv
|
|
TAR=tar
|
|
GZIP=gzip
|
|
MIDX=9;
|
|
|
|
# For solaris ...
|
|
PATH=/usr/ucb:$PATH
|
|
|
|
index()
|
|
{
|
|
i=1;
|
|
while [ $i -le ${1:-$MIDX} ] ; do
|
|
echo -n "$i ";
|
|
i=`expr $i + 1`;
|
|
done
|
|
}
|
|
|
|
rindex()
|
|
{
|
|
i=${1:-$MIDX};
|
|
while [ $i -gt 0 ] ; do
|
|
echo -n "$i ";
|
|
i=`expr $i - 1`;
|
|
done
|
|
}
|
|
|
|
unrotate()
|
|
{
|
|
fn=$1;shift;
|
|
|
|
test -f $fn && $MV -f $fn $fn.new && echo $MV -f $fn $fn.new
|
|
test -f $fn.0 && $MV -f $fn.0 $fn && echo $MV -f $fn.0 $fn
|
|
for n in $* ; do
|
|
echo [$n]
|
|
dest=$fn.`expr $n - 1`
|
|
src=$fn.$n
|
|
test -f $src && $MV -f $src $dest && echo $MV -f $src $dest
|
|
done
|
|
}
|
|
|
|
idx=`index`;
|
|
|
|
if [ x${debug:-x} = yx ] ; then
|
|
set -x;
|
|
fi
|
|
|
|
for i do
|
|
file=`echo $i | sed 's/\.[0-9]$//'`
|
|
echo ${file}*
|
|
echo -n "Proceed with the unrotation of the [${file}*] group of files? [n] "
|
|
read ans
|
|
if [ x$ans = xy ] ; then
|
|
unrotate $file $idx && echo "Unrotated files ${file}*"
|
|
fi
|
|
done
|