Popatrz tutaj: http://blog.tobiasz.org/2011/08/25/linux-zliczanie-liczby-plikow-w-katalogu/
Tutaj masz jakiś kurs basha (oczywiście chyba nie ma sensu całego po kolei przerabiać, wystarczy tylko spojrzeć co jest przydatne): http://www.dief.republika.pl/main.html
Jeśli znajdę chwilę, to Ci to pomogę jakoś opracować i wyjaśnię trochę.
Okej, to tak:
skrypt przyjmujacy jako parametr nazwe katalogu
Do zczytywania parametrów wywołania skryptu, przyda Ci się zmienna $1, która przechowuje pierwszy parametr przekazany do skryptu. Analogicznie: $2 przechowuje drugi parametr, $7 - siódmy. Natomiast w zmiennej $0 jest przechowywana nazwa aktualnie wykonywanego skryptu.
Używasz tylko jednego parametru, więc przyda Ci się zmienna $1. Najpierw powinieneś sprawdzić, czy nie jest przypadkiem pusta (sprawdzasz ifem czy równa się pustemu łańcuchowi znaków):
if [ "$1" = "" ]; then
echo "Niepoprawne użycie programu"
echo "Użyj: $0 katalog"
exit 1
fi
Jeżeli program się nie zakończy, to znaczy, że w $1 masz jakąś wartość - tą wartością powinna być oczywiście nazwa katalogu.
Teraz możesz przystąpić do zliczania liczby poszczególnych rodzajów plików i katalogów. Informacje jak to zrobić, masz w podanym przeze mnie linku. Jeżeli czegoś tak nie ma, to wklepujesz w terminal: man find i czytasz.
Liczba podkatalogów w katalogu
echo -n "Liczba podkatalogów w katalogu: "
echo `find $1 -maxdepth 1 -type d | wc -l`
Jak to działa? Polecenie find z tymi przełącznikami wyświetla na strumieniu wyjściowym w każdej linii nazwy katalogów znajdujące się w tym katalogu (nie wliczając podkatalogów w podkatalogach) i przekazuje zawartość tego strumienia na strumień wejściowy polecenia wc, które z kolei zlicza liczbę linii i wyświetla ją na strumieniu wyjściowym.
Pozostałe zadania możesz zrobić w podobny sposób.
Liczba plików zwykłych w katalogu
Zadanie robisz bardzo podobnie jak poprzednie, tylko zmieniasz typ z d (directory) na f (file). I podobnie będziesz mógł zrobić dla dowiązań symbolicznych i jeszcze innych rodzajów plików.
Liczba plików zwykłych o zerowym rozmiarze
Czyli chodzi po prostu o puste pliki. Polecenie find ma przełącznik -empty, który pozwala znaleźć puste pliki.
echo -n "Liczba plików o zerowej długości: "
echo `find $1 -maxdepth 1 -type f -empty | wc -l`
Wyświetlanie rozmiaru katalogu
Na koniec zostało wyświetlanie rozmiaru katalogu w bajtach. Posłużę się takim kodem:
echo -n "Całkowity rozmiar katalogu w bajtach: "
echo `du -s $1 | cut -f 1`
Polecenie du -s <nazwa_katalogu> wyświetli nam rozmiar katalogu, ale w takiej postaci:
<liczba_bajtów> <nazwa_katalogu>
np.
123456 Pulpit/
My chcemy uzyskać tylko pierwszą z tych wartości, więc przekazujemy wynik tego polecenia poleceniu cut, które "wytnie" pierwszą wartość i będziemy mogli tylko ją wyświetlić na ekranie
To chyba na tyle. Nie jestem pewien w 100%, czy podane przeze mnie kody są pozbawione błędów, gdyż ich nie testowałem, ale mam nadzieję, że wszystko jest okej.
W razie wątpliwości pytaj.