Grep i pronađite pravila operatera za Linux

Grep i pronađite pravila operatera za Linux

U početku, UNIX/Linux operativni sustavi nisu imali grafičko sučelje, jer su bili usredotočeni na upotrebu poslužitelja. Danas u tom pogledu nisu inferiorni od sustava Windows, zbog čega korisnici koji koriste ovaj OS rijetko poznaju sintaksu i svrhu glavnih naredbi Linux. U međuvremenu, ovo je vrlo moćan alat koji vam omogućuje da brzo obavite operacije koje su, koristeći osnovne alate OS -a, problematične ili nemoguće. Danas ćete upoznati operatore Find and Grep, koji su osnovni za datotečni sustav svih Linux distribucija.

Imenovanje operatora pronalaska i GREP -a

Tim Find u Linuxu je operator naredbenog retka koji radi s datotekama koje zaobilaze postojeću hijerarhiju. Omogućuje vam pretraživanje datoteka pomoću mnogih filtera, kao i izvršavanje određenih radnji nakon njihovog uspješnog pretraživanja. Među kriterijima za pretraživanje datoteka gotovo su svi dostupni atributi, od datuma stvaranja do rezolucije.

GREP tim u Linuxu također se odnosi na tražilice, ali unutar datoteka. Doslovni prijevod tima je "globalno tiskanje regularnih izraza", ali pečat ovdje znači zaključak rezultata rada na uređaju prema zadanim postavkama, što je obično monitor. Imajući ogroman potencijal, operator se koristi prilično često i omogućuje vam pretraživanje unutar jedne ili više datoteka prema navedenim fragmentima (predlošci). Budući da se terminologija u Linuxu značajno razlikuje od takvih u sustavu Windows, mnogi korisnici imaju značajne poteškoće koristeći ove naredbe. Pokušat ćemo ukloniti ovaj nedostatak.

Grep i pronađite sintaksu

Započnimo s operatorom pronalaska. Sintaksa tima za pretraživanje datoteka izgleda ovako:

Pronađite [gdje potražiti] [Parametri] [-optic] [Akcija]

Neki koriste parametre:

  • -Dubina: pretraživanje u trenutnoj mapi i subkatalisti;
  • -Verzija: Donesite verziju tima;
  • -Ispis: prikazati cjelovita imena datoteka (u Linuxu mogu biti proizvoljno velike);
  • -Tip F: Pretražite isključivo datoteke;
  • -Tip D - Pretražite samo direktorij (mape).

Popis dostupnih opcija (naznačeno kroz crticu):

  • Ime: Pretraživanje datoteke po imenu;
  • Korisnik: Pretražite po imenu vlasnika datoteke;
  • Perm: prema atributu "način pristupa";
  • MTIME: U vrijeme posljednje promjene (uređivanje) datoteke;
  • Grupa: po grupi;
  • atime: do datuma posljednjeg otvaranja datoteke;
  • Noviji: traženje datoteke s datumom više od direktive navedene u predlošku;
  • Veličina: po veličini datoteke u bajtovima;
  • Nouser: Potražite datoteke koje nemaju uneseni atribut "Vlasnik".

GREP sintaksa:

Grep [opcije] predložak [gdje pogledati]

Opcije treba shvatiti kao dodatne pojašnjenja parametara, na primjer, uporabu obrnutog režima ili pretraživanja određenog broja redaka.

Predložak označava što treba potražiti pomoću izravno navedenog retka ili regularnog izraza.

Mogućnost korištenja regularnih izraza može značajno proširiti mogućnosti pretraživanja. Indikacija standardnog zaključka može biti korisna ako je zadatak filtrirati pogreške zabilježene u zapisnicima ili tražiti PID proces u rezultatima naredbe PS, što može biti na više stranica.

Razmotrite najčešće GRAS parametre:

  • -B: Prikažite broj bloka prije izdavanja rezultirajuće retke;
  • -C: potrebno je izračunati broj unosa željenog fragmenta;
  • -I: Pretražite bez registracije registra;
  • -N: Izdajte broj retka na standardni izlazni uređaj u kojem je pronađen željeni fragment ili predložak;
  • - L: Kao rezultat izdavanja, trebaju biti prisutna samo imena datoteka s pronađenim fragmentom pretraživanja;
  • -S: Zanemarite izlaz pogreške;
  • -W: Potražite fragment okružen s obje strane prostorima;
  • -V: obrnuto pretraživanje, to jest prikaz svih linija koje ne sadrže dani fragment;
  • -E: Parametar ukazuje na to da slijedi daljnji regularni izraz koji ima vlastitu sintaksu;
  • -AN: Zaključak željenog fragmenta i prethodnih N linija;
  • -BN: Isto, ali s linijama koje idu nakon predloška.

Sada ima smisla preći s teorijskog dijela na praktično.3

Primjeri upotrebe komunalnih usluga

Ako znate što je kombinatorike, tada bi trebao biti zastupljen pravi broj mogućih kombinacija timova za pretraživanje. Ograničit ćemo se na samo najkorisnije primjere koji vam mogu biti korisni tijekom rada.

Potražite tekst u datotekama

Imajmo prava administratora i imamo zadatak pronaći određenog korisnika u ogromnoj datoteci lozinke. Trebat će nam prilično jednostavan tim koji označava put objavljivanja datoteke:

Grep nameuser /etc /passwd

Ako je rezultat pretraživanja pozitivan, dobit ćemo rezultirajući redak približno sljedeće vrste:

NameUser: X: 1021: 1021: NameUser ,,,: Home/Korisnik:/Bin/Bash

Ako trebate potražiti fragment teksta bez uzimanja u obzir registra registra, tim će izgledati ovako:

Gras -i "nameuser" /etc /passwd

U ovom će slučaju korisnik imena i njegov "imenjak" ime, kao i sve ostale moguće kombinacije.

Zaključak nekoliko redaka

Dohvatimo sve pogreške iz dnevnika prozora Shell xorg.zapisnik. Zadatak je kompliciran činjenicom da nakon pogrešnog niza može slijediti niz koji sadrži vrijedne podatke. Odlučeno je da li naredbu prisiljavamo da prikaže nekoliko redaka pomoću retka "pp" kao predložak:

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

Dobivamo liniju koja sadrži predložak i 5 redaka nakon njega.

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

Linijski izlaz s fragmentom teksta i tri retka prije i poslije.

Korištenje regularnih izraza u GREP -u

Ovo je jedan od najmoćnijih Linux alata koji značajno proširuje mogućnost formiranja predloška pretraživanja. Redovni izrazi imaju vlastitu sintaksu, prilično kompliciranu. Nećemo se zaroniti, ograničavajući se na primjer upotrebe RV -a. Kao što već znate, naznačiti da se regularni izraz dodatno koristi, koristi se -e parametar.

Dopustite nam u datoteci poruka.2 Moramo uhvatiti sve linije za rujan:

Grep "^sep 09"

Rezultat će biti ovako nešto:

Rujna 09. 01:11:45 GS124 NTPD [2243]: Vremenski resetiranje +0.197579 s

Rujna 09. 01:19:10 GS124 NTPD [2243]: Vremenski resetiranje +0.203484 s

Za pretraživanje predloška smještenog na kraju retka koristi se simbol "$":

Grep "izraz.$ "Poruke

Proizlaziti:

17. lipnja 19:01:19 CLONEME KERNEL: DIEN DAEMON TERM.

11. rujna 06:30:54 CLONEME KERNEL: TEMON TEMON.

I ovdje je primjer korištenja regularnog izraza koji vam omogućuje traženje linija koje sadrže bilo koje brojeve osim nule:

Grep "[1-9]"/var/log/xorg.1.zapisnik

Korištenje rekurzivnog pretraživanja u GREP -u

Ako ste upoznati s izrazom "rekurzija", tada se u Linuxu ova tehnika koristi, posebno za pretraživanje fragmenta u nekoliko datoteka smještenih u katalogu i njegovim potkatalima. Opcija -r će ukazivati ​​na prisutnost rekurzije. Potražimo fragment "po imenu.Org "u datotekama koje se nalaze u potkatalima mape /itd. /Apache1:

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

Rezultat je možda ovako nešto:

/etc/apache1/vhosts.D/ imenovana.Org

Ako naziv datoteke nije potrebno, koristimo -h: h:

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

Potražite riječi

Standard potraga za QWE fragmentom završit će se izdavanjem svih riječi u kojima je pronađen ovaj fragment: KBQWE, QWE123, AAFRQWE32. Za ograničavanje pretraživanja samo s danim fragmentom, morate koristiti -W parametar:

Gras -w "qwe" gdje pronaći

Potražite dvije ili više riječi

Zakomplicirajte zadatak: Moramo pronaći sve crte u kojima se nalaze dvije riječi. Tim će biti takav:

Gras -w "word01 | word02" gdje je pronaći

Broj redaka

Ako je potrebno za izračunavanje. Koliko puta se željeni fragment nalazi u datoteci, koristimo dizajn s -c parametrom:

Gras -c "" tekst "gdje_ pronaći

Parametar -n pomaže u saznanju u kojem liniji pronađen željeni predložak:

Gras -n "nuser" /etc /passwd

Obrnuto pretraživanje pomoću grep

Ponekad zadatak pretraživanja pomoću Grep -a sa sadržajem datoteka nije pronaći sam unos, već crte u kojima ovaj fragment nije prisutan. Opcija -V će nam pomoći:

Gras -v "txt" gdje_ pronaći

Izlaz naziva datoteke

Dopustite da morate pronaći sve datoteke u navedenom direktoriju koji sadrži željeni predložak. To se može učiniti pomoću -l parametra. Dakle, puna naredba za izlaz datoteka koje sadrže niz "sekundarni" u mapi /etc izgledat će kako slijedi:

Grep -l "sekundarni" /itd

Izlaz u boji pomoću grep

Ostajanje s drugom bojom odličan je način za vizualizaciju željenog ulaska koji značajno smanjuje opterećenje očiju ako se operacija često izvodi. Ispada da GRAS ima mogućnost za ovaj izlaz rezultata pretraživanja:

Grepor -boja "sekundarno" /itd

Nastavljamo s razmatranjem primjera korištenja uslužnog programa Find u Linuxu.

Potražite sve datoteke

Za povlačenje popisa datoteka smještenih u trenutnom katalogu koristimo naredbu u sljedećem formatu:

Pronaći .

Ako trebate pokazati puno ime datoteka, koristimo naredbu

Pronaći . -Ispis

Izlaz datoteke u određenom katalogu

Za pretraživanje datoteka u mapi koju je definirao korisnik koristimo naredbu

Pronaći ./itd

Ali kako možete pronaći datoteke koje sadrže dani fragment u trenutnom katalogu:

Pronaći . -IME "*.Gif "

Ako se pretraživanje mora provesti bez računovodstva registra, naredbu je potrebno izmijeniti:

Ne uzimajte u obzir registar prilikom pretraživanja po imenu:

Pronaći . -U meni "*.Gif "

Ograničavanje dubine pretraživanja

Drugi prilično tipičan zadatak je pretraživanje datoteka u određenoj mapi prema određenom imenu:

Pronaći . -maxdepth01 1 -name "*.Html "

Invertiranje predloška

Već smo razmotrili analognu tima da traži linije koje ne sadrže dani fragment. Na isti način možete učiniti s datotekama koje ne odgovaraju određenom predlošku:

Pronaći . -ne -name "Korisnik*"

Pretražite po nekoliko kriterija

Dajemo primjer naredbenog retka koristeći uslužni program za pretraživanje po dva kriterija pomoću operatora NOT (isključenja):

Pronaći . -Naziv "Korisnik" -not -name "*.Html "

U ovom slučaju, datoteke čije ime uključuje fragment korisnika, ali koje imaju proširenje, neće biti pronađene. Umjesto operatera iznimke, možete koristiti logično "/" ili "::

Pronaći -name "*.js "-o -name"*.SQL "

U ovom ćemo slučaju dobiti potpuni popis datoteka s oba proširenja koja se nalaze u trenutnom direktoriju.

Pretražite u nekoliko kataloga

Ako trebamo pronaći datoteke u dva kataloga, samo naznačite iz praznine:

Pronaći -tipa f ./test01 ./test02 -name "*.SQL "

Potražite skrivene datoteke

U Linuxu, kao i u sustavu Windows, postoje skrivene datoteke koje, kada koristite naredbu za pronalaženje, neće biti prikazane bez posebnog simbola. Ovaj simbol je Tilda, a direktiva će imati sljedeći izgled:

pronaći ~ -name ".*"

Potražite datoteke u Linuxu po dozvoli

Ponekad je potrebno filtrirati katalog za određenu masku prava. Na primjer, ako trebamo pronaći datoteke s atributom 0661, koristimo naredbu:

Pronaći . -Perm 0661

Zadatak filtriranja datoteka s atributom "samo za čitanje" rješava se na sljedeći način:

Pronađi /itd /korisnik -perm /u = r

Ali kako će izgledati pretraživanje izvršnih datoteka u katalogu ETC:

Pronađi /itd .Perm /a = x

Potražite datoteke po grupama/korisnicima

Administrator se često mora suočiti s zadatkom pretraživanja datoteka koje su svojstvo određenog korisnika i/ili grupe. Pretražite korisnika:

Pronaći . -Korisnik Slavko

Za korisničke grupe koristi se drugi parametar:

Pronađi /var -grup

Pretražite prema datumu posljednje izmjene

Vidljivi format datuma datoteke u Linux OS -u je upravo datum njegove izmjene (isti se princip koristi u sustavu Windows). Da biste popisali popis po datumu, koristi se opcija mtime. Recimo da moramo pronaći datoteke promijenjene prije dva mjeseca:

Pronađite /home -mtime 60

Među atributima datoteke nalazi se datum njegovog posljednjeg otkrića (bez izmjene). Takve se datoteke prikazuju sljedećom naredbom:

Pronađite /home -atime 60

Također možete postaviti vremenski interval. Za pretraživanje datoteka modificiranih od prije četiri do dva mjeseca koristimo direktivu:

Pronađi /home -mtime +60 -mtime -120

Ali kako pronaći svježe promijenjene datoteke (prije dva sata):

Pronađite /home -cmin 120

Potražite datoteke po veličini

Sumnjati da netko koristi disk za filmove? Tražimo datoteke veličine 1.4 GB:

Pronađite / -veličinu 1400m

Ili koristite raspon:

Pronađite / -veličinu +1400m -size -2800m

Potražite prazne datoteke/kataloge

Da, nemojte se iznenaditi. Zadatak vraćanja reda na medijima karakterističan je ne samo za Android OS. U Linuxu se odlučuje uz pomoć takve direktive:

Pronađi /var -tipa f -Empty

Primjer radnji s pronađenim datotekama

U Linuxu, tim za pronalaženje može rekurzivno izvesti određene radnje s tim datotekama, potraga za koje provodite. Da biste izvršili naredbe datoteka, morate koristiti parametar EXEC. Dakle, direktiva za prikazivanje podataka o svim datotekama pomoću naredbe LS izgledat će ovako:

Pronaći . -exec ls -l \;

Ali kako jednostavno možete izbrisati privremene datoteke s određenom maskom u direktoriju /home /temp:

Pronađi /tmp -tipa f -name "*.html ”-exec rm -f \;

Naravno, za početnika, korištenje naredbenog retka s ogromnim brojem opcija činit će se pomalo složen način, ali u Linuxu je to u redoslijedu stvari. I kako biste riješili probleme opisane ovdje u sustavu Windows? To je isto. U ovom aspektu, Linux je očito ispred.