Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- args=("${@}")
- #Funkcja wyświetlania instrukcji
- pom() {
- echo "Instrukcja: $0 /typ <directory|file> [/time <newest|oldest>]";
- echo "Jesli uzytkownik nie poda parametru /time - program posortuje od ostatnio modyfikowanych";
- exit 1;}
- #Bez podania argumentow
- if [ ! $1 ]
- then
- pom
- fi
- #Dla podanych argumentow
- for i in "${!args[@]}"
- do
- case "${args[$i]}" in
- #Rozne rodzaje help, uwzględniając składnie linixa
- -h)
- pom
- ;;
- --help)
- pom
- ;;
- #1 parametr - sprawdza czy jest directory lub file, jezeli nie to wyswietla pomoc
- /typ)
- typ=${args[$i+1]}
- [ "$typ" = "directory" ] || [ "$typ" = "file" ] || pom;;
- #2 parametr - sprawdza czy jest newest lub oldest, jezeli nie to wyswietla pomoc
- /time)
- time=${args[$i+1]}
- [ "$time" = "newest" ] || [ "$time" = "oldest" ] || pom;;
- esac
- done
- #Sortowanie
- case "$typ" in
- file)
- #Podlicza ilosc wyswietlonych plikow, posortowanych od ostatnio modyfikowanych
- il=`ls -p1c | grep -v /$ | wc -l`
- #Za pomoca linuxowego "kalkulatora" oblicza 10% z obliczonej ilosci
- il=`echo $il/10 | bc`
- if [ "$time" != "oldest" ]
- then
- #sortuje od ostatnio modyfikowanych, po czym wyswietla jedynie IL pierwszych pozycji. Zmienną IL obliczylismy wczesniej. Do grepa przesylamy wyswietlona liste posortowanych plikow (p-po folderach pokazuje slash, c-sortowanie od ostatnio modyfikowanych, 1- jedna dana na jedna linijke) rozdziela dane za pomoca nowej lini. Na samym koncu, dane ktore zawiera grep, sa ucinane za pomoca funkcji head.
- ls -p1c | grep -v /$ | head -n $il
- else
- #Tutaj to samo co wczesniej, jednak odwraca liste wyswietlaną (najpierw odwraca, pozniej ucina pierwsze il opcji), dzieki parametrowi 'r'.
- ls -p1cr | grep -v /$ | head -n $il
- fi
- ;;
- directory)
- #Tak samo sortuje jak w time, tylko że po folderach. Dzięki '*/' wyswietla slasha po folderach. Wordcounter zlicza slowa jak wczesniej.
- il=`ls -1d */ | wc -l`
- #Identycznie tak samo
- il=`echo $il/10 | bc`
- if [ "$time" != "oldest" ]
- then
- #Zasada dzialania ta sama, jedynie rozni sie uzywaniem 'd' - od directory, czyli ls wyswietla foldery
- ls -1dc */ | head -n $il
- else
- ls -1dcr */ | head -n $il
- fi
- ;;
- esac
- #Koniec skryptu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement