Robert Fidytek
Transkrypt
Robert Fidytek
SYSTEMY OPERACYJNE Laboratorium_2 MENU Ogłoszenia Plan_laboratoriów Laboratorium_1 Laboratorium_2 Laboratorium_3 Laboratorium_4 Laboratorium_5 Laboratorium_6 Kol_1_fin_03_04 Kol_1_imn_03_04 Kol_konkurs1 Giełda_zadań Laboratorium_8 Laboratorium_9 Laboratorium_10 Linki Ostatnia aktualizacja: 2005-03-03 15:51:01 Zadania - polecenie find. W odpowiedziach są błędy. 1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape. #gdy zależy nam na wielkości liter locate netscape #gdy nie zależy nam na wielkości liter locate -i netscape 2. Ogranicz wynik polecenia 1 do tych programów, które występują w podkatalogach katalogu /usr, a następnie do tylko tych plików, których nazwa brzmi dokładnie netscape. #gdy zależy nam na wielkości liter find /usr -mindepth 2 -name *netscape* -print; find /usr/*/ -name *netscape* -print #gdy nazwa ma brzmieć netscape find /usr -mindepth 2 -name netscape -print; find /usr/*/ -name netscape -print 3. Znajdź trzy literowe programy, znajdujące się w podkatalogach bin katalogu /usr. w katalogu /usr jest kilka podkatalogów /bin np: /usr/bin, /usr/X11R6/bin, ... oto złe rozwiązanie: find /usr/bin -mindepth 2 -not -type d -perm +ugo+x -name "???" -print propozycja: Tomasz Gajtkowski for d in `find /usr -type d -name bin` do find $d -type f -name "???" done 2>/dev/null czekam na inne propozycje 4. Znajdź wszystkie pliki zwykłe w systemie, które mają w nazwie ciąg znaków "conf" i wyświetl je na ekranie. #gdy chcemy wyświetlić nazwy plików find / -type f -name *conf* -print 5. Znajdź wszystkie podkatalogi w katalogu /var. #gdy chcemy wyświetlić podkatalogi razem z podkatalogami podkatalogów find /var -mindepth 1 -type d -print #gdy chcemy wyświetlić podkatalogi bez ich podkatalogów find /var -mindepth 1 -maxdepth 1 -type d -print 6. Odszukaj w swoim katalogu domowym wszystkie pliki zwykłe, mające w nazwie ciąg znaków "txt". #gdy zależy man na wielkości liter find ~ -type f -name "*txt*" -print #gdy nie zależy nam na wielkości liter find ~ -type f -iname "*txt*" -print 7. Odszukaj w swoim katalogu domowym wszystkie pliki zwykłe, mające w nazwie ciąg znaków "txt", wyświetl ich nazwy i zawartość. find ~ -type f -name "*txt*" -printf %f':nn' -exec cat '{}' ';' 8. Odszukaj w katalogu /tmp wszystkie podkatalogi i wyświetl ich opis. find /tmp -mindepth 1 -type d -ls 9. Odszukaj w systemie wszystkie pliki (i katalogi), które są Twoją własnością, po czym wyświetl ich nazwy. #same nazwy plików find / -user twoj_login -printf %f'n' #nazwy plików z pełną ścieżką find / -user twoj_login -print #przekierowanie standardowego wyjścia błędów find / -user twoj_login -print 2>/dev/null 10. Odszukaj w katalogu /etc wszystkie pliki zwykłe, mniejsze niż 7000 bajtów. find /etc -size -7000c -not -type d find /etc -size -7000c ! -type d 11. Znajdź w swoim katalogu domowym (bez podkatalogów) te pliki, które były modyfikowane w ciągu ostatnich dziesięciu dni i wyświetl ich nazwy. find ~ -maxdepth 1 -mtime 10 , -mtime -10 -not -type d -print find ~ -maxdepth 1 -mtime 10 , -mtime -10 -not -type d -printf %f'n' 12. Znajdź w katalogu bieżącym pliki zwykłe, które były modyfikowane ponad 4 dni temu. find . -type f -mtime +4 -print 13. Znajdź w swoim katalogu domowym wszystkie pliki, które nie były używane w ciągu ostatnich 20 dni. ? find ~ -not -type d -atime +20 -print 14. Znajdź w swoim katalogu domowym wszystkie pliki zwykłe, które były modyfikowane ponad 8 dni temu i wyświetl ich zawartość, pytając wcześniej o potwierdzenie. find ~ -type f -mtime +8 -ok cat '{}' ';' 15. Znajdź w swoim katalogu domowym wszystkie pliki, które były modyfikowane później niż plik /etc/passwd, wyświetl ich nazwy oraz sprawdź, jakiego są typu. (typ pliku można uzyskać stosując polecenie file) find ~ -not -type d -newer /etc/passwd -print -exec file -b '{}' ';' 16. Znajdź wszystkie pliki w katalogu /etc, które są większe niż 10 bajtów i mają więcej niż 1 dowiązanie (link). Wyświetl ich opis (z prawami, atrybutami, itp). find /etc -not -type d -size +10c -links +1 -exec ls -l '{}' ';' 17. Znajdź w katalogu /etc wszystkie podkatalogi i pliki o nazwach zaczynających się na literę a, nie będące pustymi katalogami. ? 18. Znajdź w swoim katalogu domowym (bez podkatalogów) wszystkie pliki zwykłe, mniejsze niż 50 bajtów, które były modyfikowane w ciągu ostatnich 8 dni i wyświetl po 5 pierwszych linii z każdego z nich. ? find ~ -maxdepth 1 -type f -size -50c -mtime -8 -or -mtime 8 -exec head -5 '{}' ';' 19. Znajdź w swoim katalogu domowym wszystkie pliki większe niż 50 bajtów, które nie były używane przez ponad 14 dni, albo modyfikowane przez ponad 10 dni i wyświetl ich opis. ? find ~ -not -type d -size +50c -atime +10 -exec ls -l '{}' ';' 20. Wyszukaj w całym systemie plików te, które posiadają więcej niż 3 dowiązania find / -links +3 21. Usuń z dysku wszystkie pliki o nazwach core lub z przyrostkiem .out które nie były używane w ciągu ostatnich siedmiu dni. Przy usuwaniu system powinien zapytać o potwierdzenie. find ~ '(' -name core -or -name *.out ')' -exec rm -i '{}' ';' 22. Znajdź katalogi nie posiadające praw zapisu dla użytkownika lub grupy (albo obu), i przyznaj te prawa. ? find / -type d -not -perm +ug-w -exec chmod ug+w '{}' ';' 23. Podaj rozmiar katalogów znajdujących się w Twoim katalogu domowym na I poziomie, oraz na końcu listy wyświetl ich wartość sumaryczną. find ~ -type d -maxdepth 1 -mindepth 1 -exec du --summarize --human-readable '{}' ';' ; du --summarize --human-readable ~ Copyright © by Robert Fidytek.