Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function usage #wyswietlanie helpa
- {
- echo
- echo "Składnia: $0 [OPCJA] [PLIK] ..."
- echo "Kompresowanie PLIKÓW (jeśli nie są skompresowane) i przeniesienie PLIKÓW do folderu $HOME/Kosz. Usuwanie z folderu $HOME/Kosz plików starszych niż 24h."
- echo
- echo "OPCJE"
- echo "-h wyświetla pomoc i kończy działanie"
- }
- function removeOriginal #usuwa oryginalny plik
- {
- compressed=$1 #$1 - skompresowany plik
- original=$2 #$2 - oryginalny plik
- if [ $compressed != $original ] #jesli plik skompresowany i oryginalny sa rozne
- then
- rm -r $original #usuniecie pliku oryginalnego
- fi
- }
- function removeCompressed #usuwa plik skompresowany
- {
- compressed=$1 #$1 - skompresowany plik
- original=$2 #$2 - oryginalny plik
- if [ $compressed != $original ] #jesli plik skompresowany i oryginalny sa rozne
- then
- rm -r $compressed #usuniecie pliku skompresowanego
- fi
- }
- function moveFile #usuwanie jednego pliku
- {
- compressed=$1 #$1 - skompresowany plik
- original=$2 #$2 - oryginalny plik
- if [ -e $HOME/Kosz/$(basename $compressed) ] #jesli istnieje w koszu plik o danej nazwie
- then #wewnetrzne menu
- echo "Uwaga! Próbujesz usunąć plik $original. Plik o nazwie $(basename $original) znajduje się już w folderze $HOME/Kosz i zostanie nadpisany."
- echo "Czy chcesz kontynuować?"
- echo "t - tak"
- echo "n - nie"
- read choice
- case $choice in
- "t") touch $compressed #zmiana czasu modyfikacji (do szukania plikow starszych niz 24h)
- mv -f $compressed $HOME/Kosz #nadpisanie istniejacego pliku
- removeOriginal $compressed $original;; #usuniecie oryginalu
- "n") removeCompressed $compressed $original #usuniecie pliku skompresowanego
- echo "Nie usunieto pliku: $original.";;
- *) echo "Opcja $choice nie istnieje. Wybrano domyślnie: n."
- removeCompressed $compressed $original #usuniecie pliku skompresowanego
- echo "Nie usunieto pliku: $original.";;
- esac
- else
- touch $compressed #zmiana czasu modyfikacji (do szukania plikow starszych niz 24h)
- mv $compressed $HOME/Kosz #przeniesienie pliku do kosza
- removeOriginal $compressed $original #usuniecie oryginalu
- fi
- }
- function removeFiles #usuwanie plikow
- {
- if [ ! -e $HOME/Kosz ] #sprawdzenie, czy katalog Kosz istnieje
- then
- mkdir $HOME/Kosz #tworzenie katalogu Kosz, jesli nie istnieje
- fi
- for i in $@ #iteracja po argumentach (plikach)
- do
- if [ -e $i ] #sprawdzenie, czy plik istnieje
- then
- if (! file $i | grep -q compressed) #sprawdzanie, czy plik jest juz skompresowany
- then
- file_name=$(basename $i) #nazwa pliku (bez sciezki)
- parent_name=$(dirname $i) #nazwa folderu nadrzednego dla pliku
- tar -zcf $file_name.tar.gz -C $parent_name $file_name #kompresja, ktora zmienia tez czas modyfikacji
- # -C, by nie tworzyc zagniezdzonej struktury w przypadku usuwania pliku z jakiegos folderu
- moveFile $file_name.tar.gz $i #przeniesienie skompresowanego pliku do kosza i usuwanie oryginalu
- else
- moveFile $i $i #przeniesienie skompresowanego pliku do kosza
- fi
- else #jesli plik nie istnieje
- echo "Uwaga! Plik: $i nie istnieje!"
- fi
- done
- }
- function remove24h #czyszczenie kosza
- {
- #znalezenie plikow starszych niz 24h (1440 min.) w koszu (mmin, a nie mtime ze wzgledu na blad zaokraglen)
- to_remove=$(find $HOME/Kosz/ -mindepth 1 -mmin +1440)
- if [ ${#to_remove} -ne 0 ] #sprawdzenie, czy istnieja pliki do usuniecia
- then
- rm -r $to_remove #usuniecie plikow starszych niz 24h
- fi
- }
- while getopts ":h" option #sprawdzanie, czy uzytkownik wywolal pomoc
- do
- case $option in
- h) usage #wyswietlenie pomocy
- exit;; #wyjscie z programu
- \?) echo "Nieprawidlowa opcja."
- echo "Sprobuj '$0 -h', by uzyskac wiecej informacji."
- exit;; #wyjscie z programu
- esac
- done
- #gdy nie wywolano pomocy:
- removeFiles $@ #usuwanie podanych plikow
- remove24h #usuwanie plikow starszych niz 24h z kosza
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement