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.