Naprej Nazaj Kazalo

12. Še več skriptov

12.1 Izvajanje ukaza na vseh datotekah v imeniku.

12.2 Primer: Preprost skript za varnostno kopijo (še nekoliko boljši)

#!/bin/bash
IZVORNA_MAPA="/home/"
CILJNA_MAPA="/var/varnostne_kopije/"
DATOTEKA=home-$(date +%Y%m%d).tgz
tar -cZf $CILJNA_MAPA$DATOTEKA $IZVORNA_MAPA

12.3 Preimenovalnik datotek

#!/bin/sh
# renna: preimenuje več datotek po določenih pravilih
# napisal felix hudson Jan - 2000

# najprej preverimo za različne 'načine', ki jih program ima.
# če prvi argument ($1) ustreza pogoju, izvedemo določen del
# programa ter nato končamo izvajanje skripta

# preverimo, ali gre za primer predpone
if [ $1 = p ]; then

# zdaj se znebimo spremenljivke za način ($1) ter predpone ($2)
   predpona=$2 ; shift ; shift

# hiter preskus, ki preveri, ali so bila podana imena datotek
# če niso bila, je bolje, da ne storimo ničesar, kakor 
# da bi poskušali preimenovati datoteke, ki jih ni!!

   if [$1 = ]; then
      echo "datoteke niso bile podane"
      exit 0
   fi

# ta zanka se ponovi za vsako datoteko, ki je bila podana
# skriptu, ter preimenuje eno naenkrat
   for datoteka in $*
     do
     mv ${datoteka} $predpona$datoteka
   done

# tu končamo izvajanje
   exit 0
fi

# preverimo, ali gre za preimenovanje končnice
# ta del je skoraj enak prejšnjemu, zato nima zaznamkov
if [ $1 = k ]; then
   koncnica=$2 ; shift ; shift

   if [$1 = ]; then
     echo "datoteke niso bile podane"
     exit 0
   fi

   for datoteka in $*
   do
     mv ${datoteka} $datoteka$koncnica
   done

   exit 0
fi

# preverimo, ali gre za zamenjavo vzorca
if [ $1 = z ]; then

   shift

# tale del sem dodal zato, da takrat, ko uporabnik ne
# navede parametrov, ne poškodujemo datotek

   if [ $# -lt 3 ] ; then
     echo "uporaba: renna z [izraz] [zamenjava] datoteke... "
     exit 0
   fi

# odstranimo druge parametre
   STARO=$1 ; NOVO=$2 ; shift ; shift

# ta zanka se ponovi za vsako datoteko, ki je bila podana
# skriptu, in jo preimenuje z uporabo programa 'sed', ki v
# besedilu iz standardnega vhoda poišče izraz in ga zamenja z
# drugim. Tu mu na standardni vhod podamo ime datoteke.

   for datoteka in $*
   do
     NOVO_IME=`echo ${datoteka} | sed s/${STARO}/${NOVO}/g`
     mv ${datoteka} $NOVO_IME
   done
   exit 0
fi

# če smo prišli do sem, to pomeni, da programu ni bil podan
# noben parameter, zato uporabniku povemo, kako se ga uporablja

echo "uporaba;"
echo " renna p [predpona] datoteke.."
echo " renna k [končnica] datoteke.."
echo " renna z [izraz] [zamenjava] datoteke.."
exit 0

# končano!

12.4 Preimenovalnik datotek (preprost)

#!/bin/bash
# preimenuj.sh
# enostaven preimenovalnik datotek

kriterij=$1
izraz=$2
zamenjava=$3

for i in $( ls *$izraz* );
do
   datoteka=$i
   novo_ime=$(echo $i | sed -e "s/$izraz/$zamenjava/")
   mv $datoteka $novo_ime
done

Naprej Nazaj Kazalo