Grep ja etsi operaattorit säännöt Linuxille

Grep ja etsi operaattorit säännöt Linuxille

Aluksi Unix/Linux. Nykyään tässä suhteessa ne eivät ole huonompia kuin Windows, minkä vuoksi tätä käyttöjärjestelmää käyttävät käyttäjät tietävät harvoin syntaksin ja pää Linux -komentojen tarkoituksen. Sillä välin tämä on erittäin tehokas työkalu, jonka avulla voit nopeasti suorittaa operaatioita, jotka käyttöjärjestelmän perustyökalujen avulla on ongelmallista tai mahdotonta. Tänään tapaat Finds and Grep -operaattoreita, jotka ovat kaikkien Linux -jakelujen tiedostojärjestelmän perusta.

Find- ja Grep -operaattoreiden nimittäminen

Linuxin Find -tiimi on komentorivin operaattori, joka työskentelee olemassa olevan hierarkian ohittamalla tiedostot. Sen avulla voit etsiä tiedostoja monien suodattimien avulla ja suorittaa tiettyjä toimintoja tiedostojen yli niiden onnistuneen haun jälkeen. Tiedostojen etsintäkriteerien joukossa on melkein kaikki käytettävissä olevat määritteet, luomispäivästä resoluutioon.

GREP -tiimi Linuxissa viittaa myös hakukoneita, mutta tiedostojen sisällä. Ryhmän kirjaimellinen käännös on ”säännöllisten lausekkeiden globaali painatus”, mutta tässä sinetti tarkoittaa oletuksena laitteen työn tulosten lopputulos, joka yleensä on näyttö. Operaattoria käytetään valtavan potentiaalin avulla melko usein, ja voit etsiä yhden tai useamman tiedoston sisällä määritettyjen fragmenttien (mallit) mukaan. Koska Linuxin terminologia eroaa merkittävästi sellaisista Windowsissa, monilla käyttäjillä on merkittäviä vaikeuksia näiden komentojen avulla. Yritämme poistaa tämän haitan.

Grep ja etsi syntaksi

Aloitetaan Find -operaattorista. Tiedostohakutiimin syntaksi näyttää tältä:

Löydä [mistä etsiä] [parametrit] [-Optinen] [toiminta]

Jotkut käyttävät parametreja:

  • -Syvyys: Hae nykyisestä kansiosta ja subkatalisteista;
  • -Versio: Tuo joukkueen versio;
  • -Tulosta: Näytä täydelliset tiedostonimet (Linuxissa ne voivat olla mielivaltaisesti suuria);
  • -Tyyppi F: Hae yksinomaan tiedostot;
  • -Tyyppi D - Haku vain hakemisto (kansiot).

Luettelo käytettävissä olevista vaihtoehdoista (merkitty tavuviivalla):

  • Nimi: Tiedostohaku nimellä;
  • Käyttäjä: Hae tiedoston omistajan nimellä;
  • Perm: Attribuutin "pääsytila" mukaan;
  • MTime: Tiedoston viimeisen muutoksen aikaan;
  • Ryhmä: ryhmä;
  • ATIME: Tiedoston viimeisen avaamisen päivämäärään mennessä;
  • Uudempi: Tiedoston etsiminen, jonka päivämäärä on enemmän kuin mallissa määritetty direktiivi;
  • Koko: Tiedoston koon mukaan tavuina;
  • Nouser: Etsi tiedostoja, joilla ei ole syötettyä määritettä "omistaja".

Grep -syntaksi:

Grep [optio] malli [mistä etsiä]

Vaihtoehdot olisi ymmärrettävä lisäparametreiksi, esimerkiksi käänteisen järjestelmän käyttö tai tietyn määrän rivien etsiminen.

Malli osoittaa, mitä on etsittävä suoraan määritettyä viivaa tai säännöllistä lauseketta käyttämällä.

Mahdollisuus käyttää säännöllisiä lausekkeita voi laajentaa huomattavasti hakuominaisuuksia. Vakiopäätöksen osoitus voi olla hyödyllinen, jos tehtävän on suodatettava lokeihin tallennetut virheet tai etsimään PID -prosessia PS -komennon tuloksista, jotka voivat olla moni -sivut.

Harkitse yleisimpiä GRAS -parametreja:

  • -B: Näytä lohkon numero ennen tuloksena olevan linjan antamista;
  • -C: On tarpeen laskea halutun fragmentin merkintöjen lukumäärä;
  • -I: Hae ilman rekisteröintiä;
  • -N: Anna linjanumero vakiolähtölaitteeseen, jossa löydettiin haluttu fragmentti tai malli;
  • - L: liikkeeseenlaskun seurauksena vain löydetyn hakufragmentin tiedostojen nimet tulisi olla läsnä;
  • -S: Ohita virheen lähtö;
  • -W: Etsi fragmentti, jota molemmin puolin ympäröivät tilat;
  • -V: Käänteinen haku, toisin sanoen kaikkien rivien näyttö, joka ei sisällä annettua fragmenttia;
  • -E: Parametri osoittaa, että edelleen tavallinen lauseke, jolla on oma syntaksi;
  • -AN: Halutun fragmentin ja aikaisempien N -linjojen päätelmä;
  • -BN: Sama, mutta linjat kulkevat mallin jälkeen.

Nyt on järkevää siirtyä teoreettisesta osasta käytännölliseen.3

Esimerkkejä apuohjelmien käytöstä

Jos tiedät mitä yhdistelmä on, hakuryhmien mahdollisten yhdistelmien todellinen määrä tulisi edustaa. Rajoitamme itsemme vain hyödyllisimpiin esimerkkeihin, jotka voivat olla hyödyllisiä sinulle työn aikana.

Etsi teksti tiedostoista

Olkaamme järjestelmänvalvojan oikeudet ja meillä on tehtävä löytää tietty käyttäjä valtavasta salasanatiedostosta. Tarvitsemme melko yksinkertaisen joukkueen, joka osoittaa tiedoston postituspolun:

Grep nameuser /etc /passwd

Jos hakutulos on positiivinen, saadaan tuloksena olevan linjan, joka on suunnilleen seuraavan tyyppinen:

NameUser: X: 1021: 1021: Nameuser ,,:/Etusivu/Käyttäjä:/Bin/Bash

Jos joudut etsimään fragmenttiä tekstistä ottamatta huomioon rekisterirekisteriä, joukkue näyttää tältä:

Gras -i "nameuser" /etc /passwd

Tässä tapauksessa NameUser -käyttäjä ja sen "Namesake" NameUser sekä kaikki muut mahdolliset yhdistelmät löytyvät.

Useiden rivien päätelmä

Saakaamme kaikki virheet ikkunan kuoren Xorg -lokista.Hirsi. Tehtävää on monimutkainen se, että virheellisen jälkeen merkkijono, joka sisältää arvokasta tietoa, voi seurata. Päätetään, pakotammeko komennon näyttämään useita rivejä rivillä "PP" mallina:

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

Saamme linjan, joka sisältää mallin ja 5 riviä sen jälkeen.

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

Rivilähtö tekstin fragmentilla ja kolme riviä ennen ja jälkeen.

Käyttämällä säännöllisiä lausekkeita GREP: ssä

Tämä on yksi tehokkaimmista Linux -työkaluista, jotka laajentavat merkittävästi mahdollisuutta muodostaa hakumalli. Säännöllisillä ilmaisuilla on oma syntaksi, melko monimutkainen. Emme syventy siihen, rajoittamalla itseämme matkailuautojen käytöstä. Kuten jo tiedät, osoittaa, että säännöllistä lauseketta käytetään edelleen, -e -parametria käytetään.

Annetaan viestitiedosto.2 Meidän on pyydettävä kaikki rivit syyskuussa:

Grep "^syyskuu 09"

Tulos on jotain tällaista:

Syyskuu 09 01:11:45 GS124 NTPD [2243]: Aika nollaus +0.197579 S

Syyskuu 09 01:19:10 GS124 NTPD [2243]: Aika nollaus +0.203484 S

Pylväslinjan päässä sijaitsevan mallin etsimiseksi käytetään ”$” -symbolia:

Grep "termi.$ "Viestit

Tulos:

17. kesäkuuta 19:01:19 Cloneme -ydin: Log -daemonikausi.

11. syyskuuta 06:30:54 Klonemet.

Ja tässä on esimerkki tavallisen lausekkeen käytöstä, jonka avulla voit etsiä linjoja, jotka sisältävät numeroita, paitsi nolla:

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

Rekursiivisen haun käyttäminen GREP: ssä

Jos tunnet termin "rekursio", niin Linuxissa tätä tekniikkaa käytetään erityisesti etsimään fragmentti useista luettelossa ja sen alakailoissa sijaitsevista tiedostoista. Vaihtoehto -R osoittaa rekursion esiintymisen. Etsimme fragmenttia "FameMain.Org "Tiedostoissa, jotka sijaitsevat kansiossa /etc /apache1:

Gras -r "nimeä.Org "/etc/apache1/

Tulos voi olla jotain tällaista:

/etc/apache1/vhosts.D/ nimeä.Org

Jos tiedostonimeä ei vaadita, käytämme -h: h:

Grep -h -r "nimeä.Org "/etc/apache1/

Etsi sanoja

Vakio QWE -fragmentin haku päättyy kaikkien sanojen liikkeeseenlaskuun, joista tämä fragmentti löytyy: KBQWE, QWE123, AAFRQWE32. Rajoittaaksesi hakua vain tietyllä fragmentilla, sinun on käytettävä -W -parametria:

Gras -W "QWE" mistä löytää

Etsi kaksi tai useampia sanoja

Monimutkaistaa tehtävää: Meidän on löydettävä kaikki rivit, joista löytyy kaksi sanaa. Joukkue on tällainen:

Gras -W "Word01 | Word02" mistä löytää

Linjojen lukumäärä

Jos se tarvitaan laskemiseen. Kuinka monta kertaa haluttu fragmentti löytyy tiedostosta, käytämme mallia -c -parametrilla:

Gras -c "'teksti", mistä_ löytää

-N -parametri auttaa selvittämään, millä rivillä haluttu malli löytyy:

Gras -n "nuser" /etc /passwd

Käänteinen haku GREP: n avulla

Joskus tehtävä etsiä GREP: tä tiedostojen sisällön avulla ei ole itse merkinnän löytäminen, vaan linjat, joissa tämä fragmentti puuttuu. Vaihtoehto -V auttaa meitä:

Gras -v "txt", mistä_ löytää

Tiedostonimen tulos

Voit löytää kaikki määritetyn hakemiston tiedostot, jotka sisältävät halutun mallin. Tämä voidaan tehdä -l -parametrilla. Joten, koko komento tiedostojen tulostukselle, joka sisältää merkkijonon "toissijaista" /jne. Kansiossa, näyttää seuraavalta:

Grep -l "toissijainen" /jne

Värilähtö GREP: n avulla

Toisen värin pysyminen on hieno tapa visualisoida haluttu merkintä, joka vähentää merkittävästi silmien kuormaa, jos operaatio usein suoritetaan. Osoittautuu, että GRAS: lla on vaihtoehto tähän hakutulosten tulosteen:

Grepor -väri "sekundaarinen" /jne

Jatkamme esimerkkejä Linuxin Find -apuohjelman käytöstä.

Etsi kaikki tiedostot

Jos haluat nostaa luettelon nykyisessä luettelossa olevista tiedostoista, käytämme komentoa seuraavassa muodossa:

löytö .

Jos sinun on näytettävä tiedostojen koko nimi, käytämme komentoa

löytö . -Tulosta

Tiedostotulos tietyssä luettelossa

Jos haluat etsiä tiedostoja käyttäjän määrittelemästä kansiosta, käytämme komentoa

löytö ./jne

Mutta kuinka löydät tiedostoja, jotka sisältävät tietyn fragmentin nykyisestä luettelosta:

löytö . -Nimi "*.GIF "

Jos haku on suoritettava ilman rekisteriä, komentoa on muutettava:

Älä ota huomioon rekisteriä etsiessäsi nimeltä:

löytö . -Minussa "*.GIF "

Haun syvyyden rajoittaminen

Toinen melko tyypillinen tehtävä on etsiä tiedostoja tietystä kansiosta tietyn nimen mukaan:

löytö . -MaxDepth01 1 -nimi "*.HTML "

Mallin kääntäminen

Olemme jo pitäneet ryhmän analogia etsimään linjoja, jotka eivät sisällä annettua fragmenttia. Samoin voit tehdä tiedostoilla, jotka eivät vastaa tiettyä mallia:

löytö . -ei -name "käyttäjä*"

Etsi useita kriteerejä

Annamme esimerkin komentorivistä Find Atility -sovelluksen avulla kahdella kriteerillä käyttämällä NO: n (poissulkemista) -operaattoria:

löytö . -Nimi "käyttäjä" -NOT -NAME "*.HTML "

Tässä tapauksessa tiedostoja, joiden nimi sisältää käyttäjän fragmentin, mutta joilla on laajennus, ei löydy. Poikkeusoperaattorin sijasta voit käyttää loogista "/" tai "::

Etsi -nimi "*.JS "-o -nimi"*.SQL "

Tässä tapauksessa saamme täydellisen luettelon tiedostoista, joissa on molemmat laajennukset nykyisessä hakemistossa.

Etsi useista luetteloista

Jos meidän on löydettävä tiedostoja kahdesta luettelosta, ilmoita vain aukko:

Etsi -tyyppi f ./test01 ./test02 -nimi "*.SQL "

Etsi piilotetut tiedostot

Linuxissa, kuten Windowsissa, on piilotettuja tiedostoja, joita Find -komennon käytettäessä ei näytetä ilman erityistä symbolia. Tämä symboli on Tilda, ja direktiivillä on seuraava ilme:

löytää ~ -nimi ".*"

Etsi tiedostoja Linuxista käyttöoikeuksien mukaan

Joskus on tarpeen suodattaa luettelo tietylle oikeuksien maskille. Esimerkiksi, jos meidän on löydettävä tiedostoja, joissa on määrite 0661, käytämme komentoa:

löytö . -Perm 0661

Tiedostojen suodattaminen määritteellä "vain lukemiseen" ratkaistaan ​​seuraavasti:

Löytää /etc /käyttäjä -perm /u = r

Mutta miltä ETC -luettelon suoritettavien tiedostojen etsiminen näyttää:

Löytää /jne. -Perm /A = X

Etsi tiedostoja ryhmien/käyttäjien mukaan

Järjestelmänvalvojan on usein kohdattava tehtävän etsiminen tietyn käyttäjän ja/tai ryhmän ominaisuus. Hae käyttäjän mukaan:

löytö . -Käyttäjä Slavko

Käyttäjäryhmille käytetään toista parametria:

Etsi /var -ryhmän kehittäjät

Haku viimeisen muutoksen päivämäärän mukaan

Tiedoston päivämäärän näkyvä muoto Linux -käyttöjärjestelmässä on juuri sen muokkauspäivä (samaa periaatetta käytetään Windowsissa). Luettelon muodostamiseksi päivämäärän mukaan käytetään MTime -vaihtoehtoa. Oletetaan, että meidän on löydettävä tiedostot, jotka on muutettu kaksi kuukautta sitten:

Find /Home -Mime 60

Tiedoston ominaisuuksien joukossa on viimeisen löytön päivämäärä (tekemättä muutoksia). Tällaiset tiedostot näkyvät seuraavalla komennolla:

Etsi /koti -atime 60

Voit myös asettaa aikavälin. Jos haluat etsiä tiedostoja, jotka on muokattu neljästä kahteen kuukautta sitten, käytämme direktiiviä:

FINE /HOME -MIME +60 -MIME -120

Mutta kuinka löytää vasta vaihdetut tiedostot (kaksi tuntia sitten):

Find /Home -Cmin 120

Etsi tiedostoja koon mukaan

Epäilet, että joku käyttää levyä elokuviin? Etsimme tiedostojen kokoa 1.4 GIGATAVUA:

Löytää / -koko 1400 metriä

Tai käytä aluetta:

Etsi / -koko +1400 m -koko -2800m

Etsi tyhjiä tiedostoja/luetteloita

Kyllä, älä ihmettele. Median tilauksen palauttamisen tehtävä on ominaisuus paitsi Android -käyttöjärjestelmälle. Linuxissa päätetään tällaisen direktiivin avulla:

Etsi /var -tyyppi f -vety

Esimerkki toiminnoista löydetyillä tiedostoilla

Linuxissa Find -tiimi voi rekursiivisesti suorittaa tiettyjä toimintoja näiden tiedostojen kanssa, haun, jota käyttämäsi. Tiedostokomentojen suorittamiseksi sinun on käytettävä EXEC -parametria. Joten, direktiivi kaikkien tiedostojen tietojen näyttämiseksi LS -komennolla näyttää tältä:

löytö . -Exec lS -l \;

Mutta kuinka yksinkertaisesti voit poistaa väliaikaisia ​​tiedostoja tietyllä naamiolla hakemistossa /kodissa /lämpötilassa:

Etsi /tmp -tyyppi f -name "*.html ”-exec rm -f \;

Tietysti aloittelijalle komentorivin käyttäminen, jolla on valtava määrä vaihtoehtoja. Ja kuinka ratkaisit tässä kuvatut ongelmat Windowsissa? Se on sama. Tässä näkökulmassa Linux on selvästi edessä.