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ądkuje katalog przenosząc pliki do odpowiednich folderów
------------------------------------------------------------------------
Użycie : cleandir dirA dirB [-s]
dirA - katalog porządkowany
dirB - katalog do którego zostaną przeniesione pliki
-s - przełącznik powodujący wyłączenie pojawiających sie komunikatów (opcjonalny)
EOF
exit 0
}
#funkcja weryfikują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ą katalogi
#określane w tablicy CATEGORY, jeśli nie istnieją
#to są 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łówny
#Sprawdzenie poprawności podanych parametrów
verifyData
#Wyznaczamy liczbę kategorii
NCAT=${#CATEGORY[@]}
MSG="Liczba kategorii : $NCAT" print
#Tworzymy odpowiednie foldery dla wszystkich kategorii
makeDirs
#W pętli wyszukujemy pliki o rozszerzeniach zapisanych
#w tablicy EXT a następnie porządkujemy katalog przenoszą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ądkowanie zakończone"