Wyszukiwanie plików i katalogów
W celu wyszukania interesujących nas plików w systemie korzystamy z polecenia
find.
Ogólna postać polecenia jest następująca:
find ścieżka warunki
Zadanie wyszukania określonych za pomocą
warunków plików sprowadza się
do przejrzenia całego drzewa plików określonego przez
ścieżkę.
Najczęściej wykorzystywane warunki to:
-name wzorzec | - nazwa pliku |
-typ typ | - typ pliku:
f-plik, d-katalog, l>-dowiązanie |
-print | - wyświetla znalezione nazwy plików z pełnymi ścieżkami dostępu |
-perm NNN | - znajduje pliki o podanych prawzch dostępu |
-exec polecenie ()\; | - dla każdego znalezionego pliku wykonuje polecenie |
Warunki można ze sobą łączyć, budując w ten sposób dość szczegółowe zapytania.
Przykłady:
find /usr -type d -print
- Wyświetlenie wszystkich podkatalogów z katalogu /usr
find ~ -type f -name .* -print
- Wyświetlenie listy plików ukrytych znajdujących się w katalogu domowym użytkownika
find /var/www/html -type f -name .* -exec grep "UNIX" {}\; -print
- Wyświetlenie listy stron WWW z katalogu /var/www/html zawierających w treści tekst UNIX.
Do wyszukiwania linii pasujących do wzorca w danym pliku tekstowymsłuży polecenie
grep
Ogólna postać polecenia jest następująca:
grep [opcje] wzorzec pliki
Podstawowe opcje:
-N - drukuje N linii nad i pod wyszukanym tekstem z pliku
-f plik - pobiera listę wzorców z podanego pliku
-i - nie rozróżnia małych i dużych liter
-n - wyświetla linię i jej numer w pliku
-v - dopasowanie odwrotne, wyświetla te linie, które nie pasują do wzorca
Przy budowaniu wzorca można skorzystać ze zanczników:
^ - oznacza początek linii
$ - oznacza koniec linii
Przykłady:
grep -i "<title>" index.html
- Wyświetlenie linii z pliku index.html zawierającej znacznik <title>
grep -i hello plik.txt | head -1
- Wyświetlenie pierwszej linii z pliku plik.txt która zawiera tekst hello
grep "^War" miasta.txt | wc -l
- Przeszukanie pliku miasta.txtw poszukiwaniu miast,
których nazwy zaczynają się od War.
Wynik przekazywany jest do poleceniawc,które zwraca liczbę linii, a więc liczbę miast.
ls ~ | grep "html$"
- Alternatywny sposób na wyświetlenie listy plików z katalogu domowego,
których nazwa kończy się na html.
grep ^$ plik.txt | wx -l
- Wyznaczenie liczby pustych linii w pliku plik.txt
Ćwiczenia:
Wykorzystując plik
miasta.txt wykonać następujące ćwiczenia:
- Napisać polecenie, które wyświetli wszystkie miasta, których w nazwie występuje tekst dom
- Wyświetlić na ekran wszystkie miasta, których nazwa jest dwu (lub więcej) członowa.
- Powyższą listę posortować wg nazwy i wyświetlić na ekran tylko ostatnie 5 pozycji.
- Policz znaki występujące w nazwie dowolnego pliku lub katalogu.
- Ile miast zawiera na początku litery W, a na końcu w lub a? A ile miast nie spełnia tego warunku?
- Wyszukaj wszystkie miasta, których nazwa zaczyna się na: War, Wro lub Wie.
- Wyszukaj w katalogu /home/ee/stud wszystkie katalogi, których nazwa zaczyna się na kow.
- Wyszukaj w katalogu /etc wszystkie pliki, których nazwa zaczyna się na host.
- Wyszukaj w katalogu /home/ee/stud wszystkie katalogi, do których wszyscy użytkownicy systemu mają pełne prawa.