mirror of https://github.com/tLDP/LDP
49 lines
1.1 KiB
Bash
49 lines
1.1 KiB
Bash
#! /bin/bash
|
|
# rn.sh
|
|
|
|
# Very simpleminded filename "rename" utility (based on "lowercase.sh").
|
|
#
|
|
# The "ren" utility, by Vladimir Lanin (lanin@csd2.nyu.edu),
|
|
#+ does a much better job of this.
|
|
|
|
|
|
ARGS=2
|
|
E_BADARGS=85
|
|
ONE=1 # For getting singular/plural right (see below).
|
|
|
|
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
|
|
|
|
number=0 # Keeps track of how many files actually renamed.
|
|
|
|
|
|
for filename in *$1* #Traverse all matching files in directory.
|
|
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
|
|
|
|
if [ "$number" -eq "$ONE" ] # For correct grammar.
|
|
then
|
|
echo "$number file renamed."
|
|
else
|
|
echo "$number files renamed."
|
|
fi
|
|
|
|
exit $?
|
|
|
|
|
|
# Exercises:
|
|
# ---------
|
|
# What types of files will this not work on?
|
|
# How can this be fixed?
|