171 lines
5.0 KiB
HTML
171 lines
5.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>BASH Programming - Introduction HOW-TO: More Scripts</TITLE>
|
|
<LINK HREF="Bash-Prog-Intro-HOWTO-13.html" REL=next>
|
|
<LINK HREF="Bash-Prog-Intro-HOWTO-11.html" REL=previous>
|
|
<LINK HREF="Bash-Prog-Intro-HOWTO.html#toc12" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Bash-Prog-Intro-HOWTO-13.html">Next</A>
|
|
<A HREF="Bash-Prog-Intro-HOWTO-11.html">Previous</A>
|
|
<A HREF="Bash-Prog-Intro-HOWTO.html#toc12">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="s12">12. More Scripts</A> </H2>
|
|
|
|
<H2><A NAME="ss12.1">12.1 Applying a command to all files in a directory. </A>
|
|
</H2>
|
|
|
|
<P>
|
|
<H2><A NAME="ss12.2">12.2 Sample: A very simple backup script (little bit better)</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
#!/bin/bash
|
|
SRCD="/home/"
|
|
TGTD="/var/backups/"
|
|
OF=home-$(date +%Y%m%d).tgz
|
|
tar -cZf $TGTD$OF $SRCD
|
|
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
|
|
<P>
|
|
<H2><A NAME="ss12.3">12.3 File re-namer</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
|
|
#!/bin/sh
|
|
# renna: rename multiple files according to several rules
|
|
# written by felix hudson Jan - 2000
|
|
|
|
#first check for the various 'modes' that this program has
|
|
#if the first ($1) condition matches then we execute that portion of the
|
|
#program and then exit
|
|
|
|
# check for the prefix condition
|
|
if [ $1 = p ]; then
|
|
|
|
#we now get rid of the mode ($1) variable and prefix ($2)
|
|
prefix=$2 ; shift ; shift
|
|
|
|
# a quick check to see if any files were given
|
|
# if none then its better not to do anything than rename some non-existent
|
|
# files!!
|
|
|
|
if [$1 = ]; then
|
|
echo "no files given"
|
|
exit 0
|
|
fi
|
|
|
|
# this for loop iterates through all of the files that we gave the program
|
|
# it does one rename per file given
|
|
for file in $*
|
|
do
|
|
mv ${file} $prefix$file
|
|
done
|
|
|
|
#we now exit the program
|
|
exit 0
|
|
fi
|
|
|
|
# check for a suffix rename
|
|
# the rest of this part is virtually identical to the previous section
|
|
# please see those notes
|
|
if [ $1 = s ]; then
|
|
suffix=$2 ; shift ; shift
|
|
|
|
if [$1 = ]; then
|
|
echo "no files given"
|
|
exit 0
|
|
fi
|
|
|
|
for file in $*
|
|
do
|
|
mv ${file} $file$suffix
|
|
done
|
|
|
|
exit 0
|
|
fi
|
|
|
|
# check for the replacement rename
|
|
if [ $1 = r ]; then
|
|
|
|
shift
|
|
|
|
# i included this bit as to not damage any files if the user does not specify
|
|
# anything to be done
|
|
# just a safety measure
|
|
|
|
if [ $# -lt 3 ] ; then
|
|
echo "usage: renna r [expression] [replacement] files... "
|
|
exit 0
|
|
fi
|
|
|
|
# remove other information
|
|
OLD=$1 ; NEW=$2 ; shift ; shift
|
|
|
|
# this for loop iterates through all of the files that we give the program
|
|
# it does one rename per file given using the program 'sed'
|
|
# this is a sinple command line program that parses standard input and
|
|
# replaces a set expression with a give string
|
|
# here we pass it the file name ( as standard input) and replace the nessesary
|
|
# text
|
|
|
|
for file in $*
|
|
do
|
|
new=`echo ${file} | sed s/${OLD}/${NEW}/g`
|
|
mv ${file} $new
|
|
done
|
|
exit 0
|
|
fi
|
|
|
|
# if we have reached here then nothing proper was passed to the program
|
|
# so we tell the user how to use it
|
|
echo "usage;"
|
|
echo " renna p [prefix] files.."
|
|
echo " renna s [suffix] files.."
|
|
echo " renna r [expression] [replacement] files.."
|
|
exit 0
|
|
|
|
# done!
|
|
|
|
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<H2><A NAME="ss12.4">12.4 File renamer (simple)</A>
|
|
</H2>
|
|
|
|
<P>
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
#!/bin/bash
|
|
# renames.sh
|
|
# basic file renamer
|
|
|
|
criteria=$1
|
|
re_match=$2
|
|
replace=$3
|
|
|
|
for i in $( ls *$criteria* );
|
|
do
|
|
src=$i
|
|
tgt=$(echo $i | sed -e "s/$re_match/$replace/")
|
|
mv $src $tgt
|
|
done
|
|
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
<HR>
|
|
<A HREF="Bash-Prog-Intro-HOWTO-13.html">Next</A>
|
|
<A HREF="Bash-Prog-Intro-HOWTO-11.html">Previous</A>
|
|
<A HREF="Bash-Prog-Intro-HOWTO.html#toc12">Contents</A>
|
|
</BODY>
|
|
</HTML>
|