Verder Terug Inhoud

12. Meer Scripts

12.1 Een opdracht toepassen voor alle bestanden in een directory.

12.2 Voorbeeld: Een zeer eenvoudig backupscript (iets beter)

            #!/bin/bash          
            SRCD="/home/"
            TGTD="/var/backups/"
            OF=home-$(date +%Y%m%d).tgz
            tar -cZf $TGTD$OF $SRCD
           

12.3 Bestandshernoemer

          
             #!/bin/sh
             # renna: hernoem meerdere bestanden op basis van verscheidene
             # regels geschreven door felix hudson jan - 2000
             
             # controleer dit bestand eerst op de diverse 'modes'
             # als de eerste ($1) voorwaarde overeenkomt dan voeren we dat
             # deel van het programma uit en stoppen
             
             # controleer op de prefix voorwaarde
             if [ $1 = p ]; then
             
             # nu ontdoen we ons van de mode ($1) variabele en prefix ($2)
               prefix=$2 ; shift ; shift
             
             # een snelle controle of er bestanden werden opgegeven
             # als dit niet zo is dan kunnen we maar beter niets doen dan een
             # een aantal niet bestaande bestanden te hernoemen!!
             
               if [$1 = ]; then
                  echo "geen bestanden opgegeven"
                  exit 0
               fi
             
             # deze for loop verwerkt alle bestanden die we aan het programma
             # opgaven
             # het hernoemt per opgegeven naam
               for file in $*
                 do
                 mv ${file} $prefix$file
               done
             
             # we verlaten nu het programma
               exit 0
             fi
             
             # controle op het hernoemen van een suffix
             # de rest van dit gedeelte is vrijwel gelijk aan de vorige sectie
             # kijk alsjeblieft in die notities
             if [ $1 = s ]; then
               suffix=$2 ; shift ; shift
             
                if [$1 = ]; then
                 echo "geen bestanden opgegeven"
                exit 0
                fi
             
              for file in $*
               do
                mv ${file} $file$suffix
              done
             
              exit 0
             fi
             
             # controleer op de replacement hernoeming
             if [ $1 = r ]; then
             
               shift
             
             # ik nam deze op uit voorzorg dat er geen bestanden beschadigd
             # raken als de gebruiker niets opgeeft
             # slechts een veiligheidsmaatregel
             
               if [ $# -lt 3 ] ; then
                 echo "usage: renna r [expression] [replacement] files... "
                 exit 0
               fi
             
             # verwijder andere informatie
               OLD=$1 ; NEW=$2 ; shift ; shift
             
             # deze for loop verwerkt alle bestanden die we aan het programma
             # opgaven, het hernoemt één bestand tegelijkertijd
             # door gebruik te maken van het programma 'sed'
             # dit is een eenvoudig opdrachtregelprogramma dat standaardinvoer
             # verwerkt en een expressie vervangt door een opgegeven string
             # hier geven we het de bestandsnaam door (als standaardinvoer) en
             # vervangen de nodige tekst
             
               for file in $*
               do
                 new=`echo ${file} | sed s/${OLD}/${NEW}/g`
                 mv ${file} $new
               done
             exit 0
             fi
             
             # als we hier zijn aangekomen dat wil dat zeggen dat niets
             # zinnigs aan het programma werd doorgegeven, dus vertellen
             # we de gebruiker hoe het te gebruiken
             echo "Gebruik;"
             echo " renna p [prefix] files.."
             echo " renna s [suffix] files.."
             echo " renna r [expression] [replacement] files.."
             exit 0
             
             # done!
             
          

12.4 Bestandshernoemer (eenvoudig)

     #!/bin/bash
     # renames.sh
     # basis bestandshernoemer

     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
     

Verder Terug Inhoud