Wyszukiwanie plików i tekstów

 

W celu wyszukania interesujących nas plików w systemie korzystamy ze standardowego polecenia find.

 

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 za pomocą ścieżki. Najczęściej wykorzystywane warunki to:

-name "wzorzec" – nazwa pliku,

-type typ – typ pliku (f  plik, d katalog, l dowiązanie symboliczne, itp.),

-print  - wyświetla znalezione nazwy plików z pełnymi ścieżkami dostępu,

-exec polecenie {} \; - dla każdego znalezionego pliku wykonuje podane polecenie,

-perm nnn – znajduje pliki o podanych prawach dostępu,

 

Warunki można ze sobą łączyć budując w ten sposób dosyć szczegółowe zapytania.

 

Przykłady:

 

Wyświetlanie wszystkich podkatalogów z katalogu /usr,

 

find /usr -type d  -print   

 

Wyświetlanie listy plików ukrytych znajdujących się w katalogu domowym użytkownika

 

find ~ -type f -name ".*" -print

 

Wyświetlanie listy stron WWW z katalogu /var/www/html zawierających w treści tekst UNIX

 

find /var/www/html -type f -name "*." -exec grep “UNIX” {} \; -print

 

Do wyszukania linii pasujących do wzorca w danym pliku tekstowym (lub całej liście) służy polecenie grep.

 

grep [opcje] wzorzec [pliki]

 

Dostępne 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 wielkich liter,

-n wyświetla linię i jej numer w pliku,

-v  dopasowanie odwrotne, wyświetla te linie, które nie pasują do wzorca,

 

Przykłady

 

Wyświetlanie linii z pliku HTML zawierającej znacznik <title>, a więc określającą nazwę strony

 

grep -i “<title>” strona_www.html  

 

Wyświetlanie pierwszej linii z pliku zawierającą tekst “hello”

 

grep -i hello plik.txt | head -1  

 

Przeszukiwanie pliku miasta.txt w poszukiwaniu miast, których nazwy zaczynają się od “War”, wynik przekazywany jest do polecenia “wc”, które  zwraca liczbę linii, a więc liczbę takich miast

 

grep “^War” miasta.txt   | wc -l 

 

Alternatywny sposób na wyświetlenie listy plików z katalogu domowego użytkownika, których nazwy kończą się na html

 

ls ~ | grep “html$”

 

 

Polecenia dodatkowe.

 

Zliczanie wierszy, słów, znaków występujących w pliku odbywa się przy pomocy polecenia wc.

 

wc [opcje] [plik]

 

Opcje:

-l          wyświetla tylko liczbę linii,

-w        wyświetla tylko liczbę wyrazów,

-m        wyświetla liczbę znaków,

 

Linie w pliku można sortować przy użyciu polecenia sort.

 

sort [opcje] [plik]

 

Opcje

-n         sortuje wg wartości numerycznej,

-u         wyświetla tylko raz powtarzające się wiersze,

-r         odwraca porządek sortowania

 

 

Ć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.

 

Strona poprzednia        Strona następna