Ubuntu 20 lokalny [MK, 20/21]
Lekcja 16. Dowiązania do plików...   Polecenie find (I)
Wyszukiwanie i filtrowanie danych w systemie Ubuntu

Wyszukiwanie i filtrowanie danych w systemie Ubuntu

Wyszukiwanie plików w systemie Linux realizujemy przy użyciu polecenia find. Składnia tego polecenia jest następująca: find przeszukiwany_zbiór warunek argument_dla_warunku. Przykładowo poleceniem find /home/uczen -name *.txt wyszukamy wszystkie pliki, których nazwa kończy się wyrażeniem .txt znajdujące się w katalogu /home/uczen i jego podfolderach.

Warunki często używane z poleceniem find:

  • name – nazwa szukanego pliku (można używać znaków globalnych)
  • type – typ szukanego obiektu: plik, katalog, dowiązanie, itp.
  • maxdepth – rekursywne szukanie w podkatalogach do określonej głębokości (szukaj w podkatalogach do poziomu n)
  • mindepth – rekursywne szukanie w podkatalogach od określonej głębokości (nie szukaj w podkatalogach na poziomie mniejszym niż n)
  • size – szukanie pliku według jego rozmiaru
  • cmin – szukanie pliku według czasu modyfikacji
  • exec – pozwala wykonać dodatkowe polecenie na wynikach wyszukiwania
  • perm – szukanie plików mających określone uprawnienia
  • empty – szukanie pustych plików lub katalogów

Znaki globalne w systemie Linux:

  • * – zero lub więcej znaków
  • ? – jeden znak
  • [abcde] – jeden z wymienionych znaków
  • [a-e] – jeden znak z podanego przedziału
  • !abc – dowolny znak oprócz wymienionych
  • [!a-e] – dowolny znak nienależący do podanego zakresu
  • {ala,kot} – dowolny z wymienionych wyrazów

Przydatnym poleceniem przy wyszukiwaniu plików może być również komenda locate. Tworzy ona bazę danych z nazwami i lokalizacją wszystkich plików w systemie. Baza ta znajduje się w pliku /var/lib/mlocate/mlocate.db. Przykład użycia: locate *.log – wyszukuje w systemie wszystkie pliki kończące się na .log. Informacje o bazie otrzymamy używając parametru -S.

Jeśli chcemy przeszukiwać treść plików, to najlepszym poleceniem do tego jest grep. Podstawowe użycie: grep "igła" stóg_siana – wyszukaj wystąpień słowa igła w pliku stóg_siana. Przydatne parametry tego polecenia:

  • i – szukaj nie zwracając uwagi na wielkość liter
  • w – szukaj tylko całych wyrazów
  • A n – pokaż n linii po znalezionym słowie
  • B n – pokaż n linii przed znalezionym słowem
  • C n – pokaż n linii wokół znalezionego słowa
  • c – wyświetl liczbę linii, gdzie znaleziono tekst
  • n – wyświetl numer linii, gdzie znaleziono tekst

Polecenie grep jest również przydatne w połączeniu z poleceniem cat. Przykład użycia: cat /proc/cpuinfo | grep model.


Pytania

  • Pytanie 1.
    Co w systemach Linux oznacza wyrażenie [!abc]?
  • Aby zobaczyć tą treść musisz być zalogowany

  • Pytanie 2.
    Co w poleceniu find w systemie Linux oznacza wyrażenie [0-9]?
  • Aby zobaczyć tą treść musisz być zalogowany

  • Pytanie 3.
    Jaki parametr w poleceniu find pozwala wyszukiwać pliki bez względu na wielkość liter w ich nazwie?
  • Aby zobaczyć tą treść musisz być zalogowany

  • Pytanie 4.
    Jakiego parametru użyjemy w poleceniu find do wyszukania plików zmienionych n minut temu?
  • Aby zobaczyć tą treść musisz być zalogowany

Zadania

Zadanie 1. #
Zapisz w pliku skrypty polecenie, które wyszuka w katalogu /etc wszystkie pliki z rozszerzeniem sh.

Zadanie 2. #
Zapisz w pliku cyfra polecenie, które wyszuka w katalogu /bin wszystkie pliki mające w nazwie przynajmniej jedną cyfrę.

Zadanie 3. #
Zapisz do pliku generic polecenie, które zwróci nazwy plików z katalogu /boot zawierające co najmniej jedną cyfrę i kończące się wyrażeniem -generic.

Zadanie 4. #
Utwórz plik rozmiar i zapisz do niego polecenie find. Polecenie ma wyszukać w katalogu /boot pliki, których rozmiar jest mniejszy niż 5 megabajtów i większy niż 1 megabajt.

Zadanie 5. #
Utwórz plik ostatnio_zmienione i wpisz do niego polecenie find. Polecenie ma wyszukać w bieżącym katalogu i w jego podkatakogach, wszystkie pliki, które zostały zmodyfikowane 5 minut temu.

Zadanie 6. #
Zapisz do pliku txt składnię polecenia oraz wynik jego działania. Polecenie ma wyszukać w katalogu /usr i jego podkatalogach do trzeciego poziomu zagłębienia, pliki kończące się rozszerzeniem .txt i na każdym ze znalezionych plików ma wykonać komendę ls -lah.

Zadanie 7. #
Utwórz plik max i wpisz do niego polecenie oraz wynik jego działania. Polecenie ma wyszukać wszystkie pliki z rozszerzeniem .php znajdujące się w katalogu głównym systemu, z tym, że wyszukiwanie ma odbywać się maksymalnie do głębokości 4 podkatalogów oraz pliki mają posiadać uprawnienia 0644, czyli –rw–r––r––.

Zadanie 8. #
Zaloguj się na konto zwykłego użytkownika w systemie Ubuntu i będąc w katalogu domowym wykonaj za pomocą terminala następujące czynności:
  1. Stwórz folder Durszlak i wejdź do niego
  2. Zapisz do pliku puste polecenie i wynik jego działania. Polecenie ma zwracać nazwy pustych katalogów znajdujących się w folderze /tmp i jego podfolderach.
  3. Zapisz do pliku kropka polecenie i wynik jego działania. Polecenie ma zwracać nazwy katalogów z folderu /var i jego podfolderów, zawierające w nazwie sekwencję dowolne_znaki.dowolne_znaki.dowolne_znaki.
  4. Zapisz do pliku set polecenie i wynik jego działania. Polecenie ma zwracać nazwy plików z folderu /usr/bin i jego podfolderów, których nazwa zaczyna się od słowa set i mają uprawnienia rwxr-xr-x.
  5. Zapisz do pliku ukryte polecenie i wynik jego działania. Polecenie ma zwracać nazwy ukrytych plików znajdujących się w katalogu domowym twojego użytkownika (bez podfolderów).
  6. Zapisz do pliku wielkie polecenie i wynik jego działania. Polecenie ma zwracać wszystkie pliki w systemie, których rozmiar przekracza 100MB.
  7. Zapisz do pliku dowiazania polecenie i wynik jego działania. Polecenie ma zwracać liczbę dowiązań znajdujących się w folderze /var i jego podfolderach. (Wskazówka: wyniki z polecenia find zlicz poleceniem wc)
  8. Zapisz do pliku make polecenie i wynik jego działania. Polecenie ma zwracać nazwy plików z katalogu /usr/sbin i jego podkatalogów, których nazwa zaczyna się od słowa mk i mają uprawnienia do wykonania x dla wszystkich użytkowników. Dodatkowo na wynikach wyszukiwania należy wykonać plecenie ls -l.
  9. Przefiltruj dane z polecenia ps -aux za pomocą polecenia grep. Wybierz z niego wszystkie wpisy zawierające słowo loop lub jego fragment, bez zwracania uwagi na wielkość liter i przekieruj ostateczny wynik do pliku loop.txt
  10. Za pomocą komendy grep zlicz ile razy w pliku /etc/sudoers pojawia się słowo sudo lub jego fragment, bez zwracania uwagi na wielkość liter Przekieruj ostateczny wynik do pliku suty. txt
  11. Przefiltruj dane z polecenia ps -auxf za pomocą polecenia grep. Wybierz z niego wszystkie wpisy zawierające pojedyncze słowo work i przekieruj ostateczny wynik do pliku work.txt

Zadanie 9. #
Zapisz do pliku grep_1 polecenie i wynik jego działania. Polecenie ma zwracać liczbę linii, ile razy w pliku /var/log/syslog występuje słowo system.

Zadanie 10. #
Zapisz do pliku grep_2 polecenie grep, które zwraca linie z pliku /var/log/syslog zawierające słowo stop lub jego fragment bez zwracania uwagi na wielkość liter.

Zadanie 11. #
Zapisz do pliku grep_3 polecenie grep, które ma zwracać linie i numery linii z pliku /var/log/syslog zawierające słowo cron lub jego fragment, bez zwracania uwagi na wielkość liter.

Zadanie 12. #
Zapisz do pliku grep_4 polecenie grep, które ma zwracać linie z pliku /var/log/auth.log zawierające całe słowo USER.

Zadanie 13. #
Zapisz do pliku grep_5 polecenie grep, które zwraca linie z pliku /proc/meminfo zawierające słowo total lub jego fragment, bez zwracania uwagi na wielkość liter oraz dwie linie poniżej znalezionych.

Zadanie 14. #
Zapisz do pliku grep_6 polecenie grep, które ma zwracać linie z pliku /var/log/dmesg zawierające słowo dma lub jego fragment oraz dwie linie powyżej i poniżej znalezionych.

2020-03-15 13:51:11 2024-03-17 22:04:56


© 2024 Młody Informatyk v. 0.1.7717