LDP/LDP/guide/docbook/abs-guide/rn.sh

49 lines
1.1 KiB
Bash
Raw Permalink Normal View History

2001-07-10 14:25:50 +00:00
#! /bin/bash
2008-11-23 22:43:47 +00:00
# rn.sh
2001-07-10 14:25:50 +00:00
# Very simpleminded filename "rename" utility (based on "lowercase.sh").
#
2002-04-01 16:04:17 +00:00
# The "ren" utility, by Vladimir Lanin (lanin@csd2.nyu.edu),
#+ does a much better job of this.
2001-07-10 14:25:50 +00:00
ARGS=2
2008-11-23 22:43:47 +00:00
E_BADARGS=85
2001-09-04 13:27:31 +00:00
ONE=1 # For getting singular/plural right (see below).
2001-07-10 14:25:50 +00:00
if [ $# -ne "$ARGS" ]
then
echo "Usage: `basename $0` old-pattern new-pattern"
# As in "rn gif jpg", which renames all gif files in working directory to jpg.
exit $E_BADARGS
fi
2001-09-04 13:27:31 +00:00
number=0 # Keeps track of how many files actually renamed.
2001-07-10 14:25:50 +00:00
2001-09-04 13:27:31 +00:00
for filename in *$1* #Traverse all matching files in directory.
2001-07-10 14:25:50 +00:00
do
if [ -f "$filename" ] # If finds match...
then
fname=`basename $filename` # Strip off path.
n=`echo $fname | sed -e "s/$1/$2/"` # Substitute new for old in filename.
mv $fname $n # Rename.
let "number += 1"
fi
done
2001-09-04 13:27:31 +00:00
if [ "$number" -eq "$ONE" ] # For correct grammar.
2001-07-10 14:25:50 +00:00
then
echo "$number file renamed."
else
echo "$number files renamed."
fi
2008-11-23 22:43:47 +00:00
exit $?
2001-07-10 14:25:50 +00:00
2002-06-17 13:17:07 +00:00
# Exercises:
# ---------
2008-11-23 22:43:47 +00:00
# What types of files will this not work on?
2002-04-01 16:04:17 +00:00
# How can this be fixed?