Skocz do zawartości

Obliczanie rozmiarów plików oraz Skrypt zliczający pliki w podanym katalogu.


Recommended Posts

Hej.
Na wstępie chciałam przyznać się, że nie miałam styczności wcześniej z systemem operacyjnym (gdzieś widziałam) ale nie był mi potrzebny. Teraz muszę się go uczyć w tym się cieszę lubię nowości.
Dostałam zadania i nie wiem jak za nie się zabrać wydają się bardzo proste lecz nie wiem jak się za to zabrać. W tutorialach za bardzo tego nie ma pokazanego (być może źle szukałam).

Poniżej prześlę polecenia i proszę o wyrozumiałość.
______________________________________________________________

- Obliczanie rozmiarów plików

Wynikiem działania tego skryptu powinno być obliczenie łącznego rozmiaru plików w podanym, które maja parzyste lub nieparzyste rozmiary (określenie, czy parzyste czy nieparzyste odbywa się za pomocą parametru odd (nieparzysty) lub even (parzysty). Skrypt uruchamia się jako:

skrypt katalog odd

lub

skrypt katalog even

Wynikiem działania skryptu powinno być wyświetlenie pojedynczej liczby – wyniku będącego sumarycznym rozmiarem plików parzystych lub nieparzystych w danym katalogu (niczego poza tym). Np. Jeśli w katalogu bieżącym jest katalog A z plikami a=3B, b=4B, c=5B, D=6B, to po uruchomieniu skryptu jako:

skrypt ./A odd

na ekranie powinno się wyświetlić:

8

_____________________________________________________________

- Obliczanie rozmiarow plikow

Wynikiem działania tego skryptu powinno być obliczenie licznego rozmiaru plikow w podanym, które maja parzyste lub nieparzyste rozmiary (określenie, czy parzyste czy nieparzyste odbya się za pomocą parametru odd (nieparzysty) lub even (parzysty). Skrypt uruchamia się jako:

skrypt katalog odd

lub

skrypt katalog even

Wynikiem działania skryptu powinno być wyświetlenie pojedynczej liczby – wyniku będącego sumarycznym rozmiarem plików parzystych lub nieparzystych w danym katalogu (niczego poza tym). Np. Jeśli w katalogu bieżącym jest katalog A z plikami a=3B, b=4B, c=5B, D=6B, to po uruchomieniu skryptu jako:

skrypt ./A odd

na ekranie powinno się wyświetlić:

8

Link to post
Share on other sites
  • 2 tygodnie później...

Patrząc po dacie posta to pewnie już przeterminowane zadanie ;)

Na przyszłość jeżeli szukasz jak "ugryźć temat" to najlepiej w języku angielskim poszukuj odpowiedzi i nawet jak nie do końca ogarniasz, złóż to jakoś w całość.

Można w zasadzie jednym poleceniem to załatwić z "rurkami":

 

Dla parzystych liczb:

stat --format=%s ./* | sed -n 'p;n' | paste -sd+ | bc

 

Dla nieparzystych liczb:

stat --format=%s ./* | sed -n 'n;p' | paste -sd+ | bc

 

Pierwsze polecenie wyświetla tylko rozmiar plików w danym katalogu, każdy w nowej linii, "sed" filtruje tylko parzyste lub nieparzyste, "paste" konsoliduje wynik i zamienia znak nowej linii na sumę "+", "bc" sumuje wszystko i wyświetla sumę liczb.

Lubię takie zadania, bo nie jest napisane, czego można używać i w praktyce możesz wywołać nawet polecenie Pythona :D

Oczywiście pakiet "bc" trzeba doinstalować, bo standardowo raczej nie jest zainstalowany.

Jeżeli koniecznie muszą być narzędzia, które są dostępne w "core" dystrybucji to można też tak:
 

stat --format=%s ./* | sed -n 'p;n' | awk 'BEGIN{sum=0} {sum=sum+$1} END {print sum}'


stat --format=%s ./* | sed -n 'n;p' | awk 'BEGIN{sum=0} {sum=sum+$1} END {print sum}'

 

 

Oczywiście na potrzeby zadania trzeba to przebudować, tak aby nazwa katalogu była pobierana z parametru wywołania skryptu. Dla drugiego parametru "odd"/"even" najlepiej wykorzystać "case".

W zasadzie całe zadanie jest tylko nieco zmodyfikować.

Warto odstawić Windows na jakiś czas i pouczyć się tylko Linuxa i Bash. Tak to do niczego nie dojdziesz, bo tu wymagane jest myślenie.

Tego typu zadania można zrobić na wiele sposobów i uzyskać w zasadzie to samo. Problem zawsze jest taki, że nauczyciel nie zawsze precyzuje dokładnie, co jest dozwolone, a co nie.

Jeżeli chodziło mu o zastosowanie pętli lub if'ów to "sorry", ale takiego wymogu w treści zadania nie ma :)

 

Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...