Következő Előző Tartalom

12. Még néhány szkript

12.1 Parancs végrehajtása a könyvtárban lévő összes fájlra

12.2 Példa: egyszerű backup szkript (egy kicsivel jobb verzió)

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

12.3 Fájl átnevező program


             #!/bin/sh
             # renna: egyszerre több fájl átnevezése különböző szabályok szerint
             # írta: Felix Hudson (2000. január)

             # először is megnézzük, hogy a program milyen "üzemmódban" van
             # ha az első paraméter ($1) alapján valamelyik feltétel teljesül végrehajtjuk
             # a hozzá tartozó programrészt és kilépünk

             # előtag (prefix) szerint történő átnevezés?
             if [ $1 = p ]; then

             # most megszabadulunk a módot tartalmazó változótól ($1) és a prefixtől ($2)
               prefix=$2 ; shift ; shift

             # megnézzük, adtak-e meg fájlnevet
             # ha nem, jobb ha nem csinálunk semmit, minthogy nemlétező fájlokat
             # nevezzünk át

               if [$1 = ]; then
                  echo "nem adtál meg fájlnevet"
                  exit 0
               fi

             # ez a for ciklus végigmegy a megadott fájlokon és mindet
             # egyenként átnevezi
               for file in $*
                 do
                 mv ${file} $prefix$file
               done

             # kilépünk a programból
               exit 0
             fi

             # utótag (suffix) szerinti átnevezés?
             # az ide tartozó rész tulajdonképpen megegyezik az előzővel
             # nézd meg az ottani megjegyzéseket
             if [ $1 = s ]; then
               suffix=$2 ; shift ; shift

                if [$1 = ]; then
                 echo "nem adtál meg fájlnevet"
                exit 0
                fi

              for file in $*
               do
                mv ${file} $file$suffix
              done

              exit 0
             fi

             # helyettesítéses átnevezés?
             if [ $1 = r ]; then

               shift

             # ezt a részt azért raktam bele, hogy ne tegyük tönkre a felhasználó egyik
             # állományát se, ha helytelenek a paraméterek
             # ez csak egy biztonsági intézkedés

               if [ $# -lt 3 ] ; then
                 echo "használat: renna r [kifejezés] [helyettesítés] fájlok... "
                 exit 0
               fi

             # továbblépünk a paraméterlistán
               OLD=$1 ; NEW=$2 ; shift ; shift

             # Ez a for ciklus végigmegy az összes fájlon amit a programnak átadtak,
             # és egyenként átnevezi őket a "sed" program segítségével.
             # A "sed" egyszerű parancssori program, ami értelmezi a bemenetet és
             # kicseréli a beállított kifejezést egy adott szövegre.
             # Mi itt a fájl nevét adjuk át neki (standard bemenetként), és kicseréljük
             # benne a kifejezésnek megfelelő szövegrészeket.

               for file in $*
               do
                 new=`echo ${file} | sed s/${OLD}/${NEW}/g`
                 mv ${file} $new
               done
             exit 0
             fi

             # Ha idáig eljutottunk, akkor semmi használhatót nem adtak át a programnak
             # ezért kiírjuk a felhasználónak, hogyan használja ezt a szkriptet.
             echo "használat:"
             echo " renna p [előtag] fájlok.."
             echo " renna s [utótag] fájlok.."
             echo " renna r [kifejezés] [helyettesítés] fájlok.."
             exit 0
             
             #ennyi!
             
          

12.4 Átnevező program (egyszerű változat)

     #!/bin/bash
     # renames.sh
     # egyszerű átnevező program

     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
     


Következő Előző Tartalom