GREP i Znajdź reguły operatorów dla Linuksa

GREP i Znajdź reguły operatorów dla Linuksa

Początkowo systemy operacyjne UNIX/LINUX nie miały interfejsu graficznego, ponieważ skupiły się na użyciu serwera. Dziś pod tym względem nie są gorsze od Windows, dlatego użytkownicy korzystający z tego systemu operacyjnego rzadko znają składnię i cel głównych poleceń Linux. Tymczasem jest to bardzo potężne narzędzie, które pozwala szybko wykonywać operacje, które za pomocą podstawowych narzędzi systemu operacyjnego jest problematyczne lub niemożliwe. Dzisiaj spotkasz operatorów Find i GREP, które są podstawowe dla systemu plików wszystkich dystrybucji Linux.

Powołanie operatorów Find i Grep

Zespół Find w Linux jest operatorem wiersza poleceń do pracy z plikami omijającymi istniejącą hierarchię. Umożliwia wyszukiwanie plików za pomocą wielu filtrów, a także wykonywanie niektórych akcji przez pliki po udanym wyszukiwaniu. Wśród kryteriów wyszukiwania plików są prawie wszystkie dostępne atrybuty, od daty utworzenia po rozwiązanie.

Zespół GREP w Linux odnosi się również do wyszukiwarek, ale w plikach. Dosłownym tłumaczeniem zespołu jest „globalne drukowanie wyrażeń regularnych”, ale pieczęć tutaj oznacza zakończenie wyników pracy na urządzeniu domyślnie, który zwykle jest monitorem. Mając ogromny potencjał, operator jest często używany i pozwala wyszukiwać w jednym lub więcej plikach zgodnie z określonymi fragmentami (szablony). Ponieważ terminologia w Linux różni się znacznie od takich w systemie Windows, wielu użytkowników ma znaczące trudności z użyciem tych poleceń. Postaramy się wyeliminować tę wadę.

GREP i znajdź składnię

Zacznijmy od operatora Find. Składnia zespołu wyszukiwania plików wygląda tak:

Znajdź [gdzie patrzeć] [Parametry] [-optic] [Action]

Niektóre używają parametrów:

  • -Głębokość: Wyszukaj w bieżącym folderze i subcatalistach;
  • -Wersja: Przynieś wersję zespołu;
  • -Drukuj: Pokaż pełne nazwy plików (w Linux mogą być dowolnie duże);
  • -Typ F: Wyszukaj wyłącznie pliki;
  • -Typ D - Wyszukaj tylko katalog (foldery).

Lista dostępnych opcji (wskazana przez łącznik):

  • Nazwa: wyszukiwanie pliku według nazwy;
  • Użytkownik: Wyszukaj według nazwy właściciela pliku;
  • Perm: zgodnie z atrybutem „tryb dostępu”;
  • MTime: Do czasu ostatniej zmiany (edytuj) pliku;
  • Grupa: według grupy;
  • Atime: Do daty ostatniego otwarcia pliku;
  • Nowsze: wyszukiwanie pliku z datą więcej niż dyrektywa określona w szablonie;
  • Rozmiar: według rozmiaru pliku w bajtach;
  • Nouser: Wyszukaj pliki, które nie mają wprowadzonego atrybutu „właściciel”.

Składnia GREP:

GREP [opcje] szablon [gdzie szukać]

Opcje powinny być rozumiane jako dodatkowe parametry wyjaśniające, na przykład użycie reżimu odwrotnego lub poszukiwanie danej liczby linii.

Szablon wskazuje, czego należy szukać za pomocą bezpośrednio określonej linii lub wyrażenia regularnego.

Możliwość wykorzystania wyrażeń regularnych może znacznie rozszerzyć możliwości wyszukiwania. Wskazanie standardowego wniosku może być przydatne, jeśli zadaniem jest filtrowanie błędów zarejestrowanych w dziennikach lub wyszukiwanie procesu PID w wynikach polecenia PS, który może być wieloma stronami.

Rozważ najczęstsze parametry GRAS:

  • -B: Wyświetl numer bloku przed wydaniem uzyskanej linii;
  • -C: Konieczne jest obliczenie liczby wpisów pożądanego fragmentu;
  • -I: Wyszukaj bez rejestracji rejestru;
  • -N: Wydaj numer linii do standardowego urządzenia wyjściowego, w którym znaleziono pożądany fragment lub szablon;
  • - L: W wyniku wydania powinny być obecne tylko nazwy plików z znalezionym fragmentem wyszukiwania;
  • -S: Ignoruj ​​wyjście błędu;
  • -W: Poszukaj fragmentu otoczonego po obu stronach przestrzeni;
  • -V: Wyszukiwanie odwrócone, to znaczy wyświetlanie wszystkich linii, które nie zawierają danego fragmentu;
  • -E: Parametr wskazuje, że następuje dalsze wyrażenie regularne, które ma własną składnię;
  • -AN: Wniosek pożądanego fragmentu i poprzednich n linii;
  • -BN: To samo, ale z liniami idącymi za szablonem.

Teraz sensowne jest przejście od części teoretycznej do praktycznego.3

Przykłady korzystania z narzędzi

Jeśli wiesz, czym są kombinatory, wówczas należy reprezentować prawdziwą liczbę możliwych kombinacji zespołów wyszukiwania. Ograniczymy się tylko do najbardziej przydatnych przykładów, które mogą być dla Ciebie przydatne podczas pracy.

Wyszukaj tekst w plikach

Miejmy prawa administratora, a my mamy za zadanie znaleźć konkretnego użytkownika w wielkim pliku hasła. Potrzebujemy dość prostego zespołu wskazującego ścieżkę publikowania plików:

Grep nameuser /itp. /Passwd

Jeśli wynik wyszukiwania jest pozytywny, otrzymamy wynikową linię w przybliżeniu następującego typu:

NameUser: x: 1021: 1021: NameUser ,,,:/home/użytkownik:/bin/bash

Jeśli chcesz wyszukać fragment tekstu bez uwzględnienia rejestru rejestru, zespół będzie wyglądał tak:

Gras -i „nameuser” /etc /passwd

W takim przypadku użytkownik NameUser i jego „imiennik”, a także wszystkie inne możliwe kombinacje zostaną znalezione.

Wniosek kilku linii

Zdobądźmy wszystkie błędy z dziennika okna Xorg.dziennik. Zadanie jest komplikowane przez fakt, że po błędnym ciągu zawierającym cenne informacje może nastąpić. Zdecydujemy, że zmusimy polecenie do wyświetlania kilku linii za pomocą wiersza „PP” jako szablonu:

Gras -a5 "pp"/var/log/xorg.0.dziennik

Po niej otrzymujemy linię zawierającą szablon i 5 linii.

Gras -c3 "pp"/var/log/xorg.0.dziennik

Wyjście linii z fragmentem tekstu i trzema wierszami przed i po.

Używając wyrażeń regularnych w GREP

Jest to jedno z najpotężniejszych narzędzi Linux, które znacznie rozszerza możliwość utworzenia szablonu wyszukiwania. Wyrażenia regularne mają własną składnię, dość skomplikowane. Nie zagłębimy się w to, ograniczając się do przykładu użycia RV. Jak już wiesz, aby wskazać, że wyrażenie regularne jest dalej używane, stosuje się parametr -e.

Pozwól nam w pliku wiadomości.2 Musimy złapać wszystkie linie na wrzesień:

Grep „^września 09”

Rezultatem będzie coś takiego:

09 września 01:11:45 gs124 ntpd [2243]: Reset czasowy +0.197579 s

09 września 01:19:10 GS124 NTPD [2243]: Reset czasowy +0.203484 s

Aby wyszukać szablon znajdujący się na końcu linii paska, używany jest symbol „$”:

Termin grep „.$ "Wiadomości

Wynik:

17 czerwca 19:01:19 Kernel Cloneme: Log Daemon Termin.

11 września 06:30:54 jądro klonem.

A oto przykład użycia wyrażenia regularnego, które pozwala wyszukiwać wiersze zawierające dowolne liczby z wyjątkiem zero:

Grep „[1-9]”/var/log/xorg.1.dziennik

Korzystanie z rekurencyjnego wyszukiwania w GREP

Jeśli znasz termin „rekurencja”, w szczególności w Linux stosuje się tę technikę do wyszukiwania fragmentu w kilku plikach zlokalizowanych w katalogu. Opcja -r wskazuje obecność rekurencji. Poszukajmy fragmentu „Nameomain.Org "w plikach znajdujących się w podskatalach folderu /etc /apache1:

Gras -r "nameomain.Org "/etc/apache1/

Rezultatem może być coś takiego:

/etc/apache1/vhosts.D/ NameMain.Org

Jeśli nazwa pliku nie jest wymagana, używamy -h: h:

Grep -h -r "nameomain.Org "/etc/apache1/

Szukaj słów

Standardowe poszukiwanie fragmentu QWE zakończy się wydaniem wszystkich słów, w których znaleziono ten fragment: KBQWE, QWE123, AAFRQWE32. Aby ograniczyć wyszukiwanie tylko za pomocą danego fragmentu, musisz użyć parametru -W:

Gras -w „qwe”, gdzie znaleźć

Wyszukaj dwa lub więcej słów

Skomplikuj zadanie: musimy znaleźć wszystkie wiersze, w których znaleziono dwa słowa. Zespół będzie taki:

Gras -w "word01 | Word02" Where_

Liczba linii

W razie potrzeby do obliczenia. Ile razy pożądany fragment znajduje się w pliku, używamy projektu z parametrem -c:

Gras -c "'tekst" Where_ to znaleźć

Parametr -n pomaga dowiedzieć się, w której linii znajduje się pożądany szablon:

Gras -n „nuser” /etc /passwd

Odwrócone wyszukiwanie za pomocą GREP

Czasami zadaniem wyszukiwania za pomocą GREP przez zawartość plików nie jest znalezienie samego wpisu, ale linie, w których ten fragment jest nieobecny. Opcja -v pomoże nam:

Gras -v „txt”, w którym można znaleźć

Wyjście nazwy pliku

Pozwólcie znaleźć wszystkie pliki w określonym katalogu zawierającym żądany szablon. Można to zrobić za pomocą parametru -l. Tak więc pełne polecenie wyjścia plików zawierających ciąg „wtórny” w folderze /etc będzie wyglądał w następujący sposób:

Grep -l „wtórne” /itp

Wyjście kolorów za pomocą GREP

Pozostanie z innym kolorem to świetny sposób na wizualizację pożądanego wejścia, który znacznie zmniejsza obciążenie oczu, jeśli operacja jest często wykonywana. Okazuje się, że Gras ma opcję tego wyjścia wyników wyszukiwania:

Grepor -kolor wtórny /itp

Przechodzimy do rozważenia przykładów korzystania z narzędzia Find w Linux.

Wyszukaj wszystkie pliki

Aby wycofać listę plików znajdujących się w bieżącym katalogu, używamy polecenia w następującym formacie:

Znajdować .

Jeśli chcesz wyświetlić pełną nazwę plików, używamy polecenia

Znajdować . -Wydrukować

Wyjście pliku w danym katalogu

Aby wyszukać pliki w folderze zdefiniowanym przez użytkownika, używamy polecenia

Znajdować ./itp

Ale jak znaleźć pliki zawierające dany fragment w bieżącym katalogu:

Znajdować . -NAZWA "*.GIF "

Jeśli wyszukiwanie musi zostać przeprowadzone bez rozliczania rejestru, polecenie musi zostać zmodyfikowane:

Nie bierz pod uwagę rejestru podczas wyszukiwania według nazwy:

Znajdować . -We mnie "*.GIF "

Ograniczenie głębokości wyszukiwania

Kolejnym dość typowym zadaniem jest wyszukiwanie plików w określonym folderze zgodnie z daną nazwą:

Znajdować . -MaxDepth01 1 -name "*.Html "

Odwrócenie szablonu

Rozważaliśmy już analog zespołu do wyszukiwania linii, które nie zawierają danego fragmentu. W ten sam sposób możesz zrobić z plikami, które nie odpowiadają danego szablonu:

Znajdować . -nie -name „Użytkownik*”

Wyszukaj według kilku kryteriów

Podajemy przykład wiersza poleceń za pomocą narzędzia Znajdź do wyszukiwania według dwóch kryteriów za pomocą operatora NOT (wykluczenie):

Znajdować . -Nazwa „użytkownika” -not -name ”*.Html "

W takim przypadku pliki, których nazwa obejmuje fragment użytkownika, ale które mają rozszerzenie, nie zostaną znalezione. Zamiast operatora wyjątków możesz użyć logicznego „/” lub „::

Znajdź -name "*.js "-o -name"*.SQL "

W takim przypadku otrzymamy pełną listę plików z obiema rozszerzeniami znajdującymi się w bieżącym katalogu.

Wyszukaj w kilku katalogach

Jeśli potrzebujemy znaleźć pliki w dwóch katalogach, po prostu wskazuj z luki:

Znajdź -Type f ./test01 ./test02 -name "*.SQL "

Wyszukaj ukryte pliki

W Linux, podobnie jak w systemie Windows, istnieją ukryte pliki, które przy użyciu polecenia Find nie będą wyświetlane bez specjalnego symbolu. Ten symbol to Tilda, a dyrektywa będzie miała następujący wygląd:

Znajdź ~ -name ".*”

Wyszukaj pliki w Linux za uprawnienia

Czasami istnieje potrzeba filtrowania katalogu dla pewnej maski praw. Na przykład, jeśli musimy znaleźć pliki z atrybutem 0661, używamy polecenia:

Znajdować . -Perm 0661

Zadanie filtrowania plików za pomocą atrybutu „tylko do odczytu” jest rozwiązane w następujący sposób:

Znajdź /etc /user -perm /u = r

Ale jak będzie wyglądać wyszukiwanie plików wykonywalnych w katalogu ETC:

Znajdź /etc -perm /a = x

Wyszukaj pliki według grup/użytkowników

Administrator często musi stawić czoła zadaniu wyszukiwania plików, które są właściwością konkretnego użytkownika i/lub grupy. Wyszukaj przez użytkownika:

Znajdować . -Użytkownik Slavko

W przypadku grup użytkowników używany jest inny parametr:

Znajdź /var -grupy

Wyszukaj według daty ostatniej modyfikacji

Widoczny format daty pliku w systemie OS Linux jest dokładnie datą jego modyfikacji (ta sama zasada jest używana w systemie Windows). Aby utworzyć listę według daty, używana jest opcja MTime. Powiedzmy, że musimy znaleźć pliki zmienione dwa miesiące temu:

Znajdź /Strona główna -mtime 60

Wśród atrybutów pliku jest data jego ostatniego odkrycia (bez wprowadzania zmian). Takie pliki są wyświetlane przez następujące polecenie:

Znajdź /dom -Aatime 60

Możesz także ustawić przedział czasu. Aby wyszukać pliki zmodyfikowane z czterech do dwóch miesięcy temu, używamy dyrektywy:

Znajdź /Strona główna -mtime +60 -mtime -120

Ale jak znaleźć świeżo zmienione pliki (dwie godziny temu):

Znajdź /dom -Cmin 120

Wyszukaj pliki według rozmiaru

Podejrzewaj, że ktoś używa dysku do filmów? Szukamy plików rozmiar 1.4 GB:

Znajdź / -rozmiar 1400m

Lub użyj zakresu:

Znajdź / -Size +1400m -Size -2800m

Wyszukaj puste pliki/katalogi

Tak, nie zdziw się. Zadanie przywrócenia kolejności w mediach jest charakterystyczne nie tylko dla Androida OS. W Linux jest to rozstrzygane za pomocą takiej dyrektywy:

Znajdź /var -type f -EMPY

Przykład działań z znalezionymi plikami

W Linux zespół Find może rekurencyjnie wykonywać pewne działania z tymi plikami, wyszukiwaniem, dla którego przeprowadzasz. Aby wykonać polecenia plików, musisz użyć parametru EXEL. Tak więc dyrektywa wyświetlania informacji o wszystkich plikach za pomocą polecenia LS będzie wyglądać tak:

Znajdować . -exec ls -l \;

Ale w jaki sposób możesz usunąć pliki tymczasowe za pomocą danej maski w katalogu /domu /temperaturze:

Znajdź /tmp -type f -name "*.html ”-exec rm -f \;

Oczywiście dla początkującego użycie wiersza poleceń z ogromną liczbą opcji będzie wydawało się nieco skomplikowanym sposobem, ale w Linux jest to w kolejności rzeczy. I jak rozwiązałbyś problemy opisane tutaj w systemie Windows? To samo. W tym aspekcie Linux jest wyraźnie naprzód.