All pastes #509921 Raw Edit

Something

public text v1 · immutable
·published 2007-05-25 18:16 UTC
rendered paste body



Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie







Projekt zaliczeniowy z przedmiotu Zarządzanie Systemami i Sieciami

......................Sprzątanie świata:P.....









Skrypt wykonał:   Grzegorz Toton
Dokumentację opracował: Wojciech Szybisty              

Prowadzący zajęcia:                      
Grupa: L04


1.Czym jest cleandir?

Cleandir to skrypt służący bo porządkowania plików w folderze. Skrypt przenosi pliki z podanego folderu i umieszcza je w odpowiednim katalogu w zależności od ich rozszerzeń. Na przykład pliki z rozszerzeniami pdf, odt, doc przeniesie do folderu Dokumenty a pliki z rozszerzeniami avi, mov, mpg, do folderu Filmy itd.

2.Jak używać programu

Program cleandir pracuje w trybie wsadowym. Uruchamiamy go z konsoli poleceniem:
cleandir dirA dirB [-s]
gdzie:
dirA – katalog porządkowany
dirB – katalog do którego zostaną przeniesione pliki
-s     – przełącznik powodująca wyłączenie pojawiających sie komunikatów (opcjonalny)

Jeżeli chcemy wyświetlić pomoc wpisujemy po prostu cleandir nie podając żadnych parametrów.

3.Kod programu

#!/bin/bash

#Porządkowany folder
DIRIN=$1

#Miejsce gdzie zostaną przeniesione pliki
DIROUT=$2


SILENT=$3

#Aktualnie poszukiwana kategoria plików

#Tablica kategori
CATEGORY[0]=Dokumenty
CATEGORY[1]=Muzyka
CATEGORY[2]=Filmy
CATEGORY[3]=Zdjecia
CATEGORY[4]=Archiwa

#Tablica rozszerzeń dopasowanych do odpowiedniej kategorii
EXT[0]="pdf doc txt odt"
EXT[1]="mp3 ogg wav"
EXT[2]="avi mov mpg mp4"
EXT[3]="jpg bmp gif"
EXT[4]="zip rar tar"

CUREXT=""
CURCATEGORY=""

#Wyświetlenie pomocy i wyjście
function help {
cat <<EOF

    cleandir - porz&#261;dkuje katalog przenosz&#261;c pliki do odpowiednich folderów
    ------------------------------------------------------------------------
    U&#380;ycie : cleandir dirA dirB [-s]
    dirA - katalog porz&#261;dkowany
    dirB - katalog do którego zostan&#261; przeniesione pliki
    -s   - prze&#322;&#261;cznik powoduj&#261;cy wy&#322;&#261;czenie pojawiaj&#261;cych sie komunikatów (opcjonalny)
    
EOF
exit 0
}


#funkcja weryfikuj&#261;ca podane parametry
function verifyData
{
    n=${#DIRIN}
    if [ "${DIRIN:(n-1)}" != "/" ]
    then
        DIRIN=$DIRIN/
    fi
    n=${#DIROUT}
    if [ "${DIROUT:(n-1)}" != "/" ]
    then
        DIROUT=$DIROUT/
    fi
    
    if [ "$DIRIN" = "" ]
    then 
      help
    fi
    if [ ! -d "$DIRIN" ]
    then
      echo "cleandir : Niepoprawny katalog dirA $DIRIN"
      exit 0
    fi
    if [ ! -d "$DIROUT" ]
    then
      echo "cleandir : Niepoprawny katalog dirB $DIRIN"
      exit 0
    fi
}

#Wypisuje komunikaty
function print
{
    if [ "$SILENT" != "-s" ]
    then
       echo "$MSG"
    fi
}

#Sprawdza czy w katalogu DIROUT istniej&#261; katalogi 
#okre&#347;lane w tablicy CATEGORY, je&#347;li nie istniej&#261;
#to s&#261; tworzone

function makeDirs
{
   i=0;
   while [ $i -lt $NCAT ]; do
   if [ -d $DIROUT/${CATEGORY[$i]} ]
   then
      MSG="Katalog $DIROUT${CATEGORY[$i]} istnieje" print
   else
      MSG="Tworzenie katalogu $DIROUT${CATEGORY[$i]}" print
      mkdir $DIROUT/${CATEGORY[$i]}
   fi
   i=$[i + 1]
done
}


#Przenosi pliki do odpowiednich katalogów w danej kategorii 
function cleanDir
{
    for f in $DIRIN*.$CUREXT
    do
       if [ -e $f ]
       then
         echo "Przenoszenie pliku  $f do $DIROUT$CURCATEGORY"
         mv $f $DIROUT$CURCATEGORY
       fi
    done
}

#Program g&#322;ówny

#Sprawdzenie poprawno&#347;ci podanych parametrów
verifyData

#Wyznaczamy liczb&#281; kategorii
NCAT=${#CATEGORY[@]}
MSG="Liczba kategorii : $NCAT" print

#Tworzymy odpowiednie foldery dla wszystkich kategorii
makeDirs


#W p&#281;tli wyszukujemy pliki o rozszerzeniach zapisanych 
#w tablicy EXT a nast&#281;pnie porz&#261;dkujemy katalog przenosz&#261;c
#pliki do odpowiedniego, dla danej kategorii, folderu
i=0;
while [ $i -lt $NCAT ]; do
    
    CURCATEGORY=${CATEGORY[i]}
    MSG="-------------------------------" print
    MSG="Tworzenie kategorii : $CURCATEGORY" print
    for x in ${EXT[i]}
    do
      CUREXT=$x
      MSG="Poszukiwanie plików typu : $CUREXT" print
      cleanDir
    done    
    
    i=$[i + 1]
done

MSG="-------------------------------" print
echo "Porz&#261;dkowanie zako&#324;czone"