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 glede na določena pravila
             # 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
             
             # sedaj se znebimo spremenljivke za način ($1) ter predpone ($2)
               predpona=$2 ; shift ; shift
             
             # hiter test, ki preveri, ali so bila podana imena datotek
             # vkolikor niso bila, je bolje, da ne storimo ničesar, kot
             # da poskusimo preimenovati datoteke, ki ne obstajajo!!
             
               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
             
             # tukaj 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 vključil zato, da v primeru, ko uporabnik ne
             # navede parametrov, ne poškodujemo datotek
             
               if [ $# -lt 3 ] ; then
                 echo "uporaba: renna z [izraz] [zamenjava] datoteke... "
                 exit 0
               fi
             
             # odstranimo ostale parametre
               STARO=$1 ; NOVO=$2 ; shift ; shift
             
             # ta zanka se ponovi za vsako datoteko, ki je bila podana
             # skriptu ter jo preimenuje z uporabo programa 'sed', ki v
             # tekstu iz standardnega vhoda poišče izraz in ga zamenja z
             # drugim. Tukaj 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 bila 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/$iraz/$zamenjava/")
         mv $datoteka $novo_ime
     done
     

Naprej Nazaj Kazalo