Grep un atrodiet operatorus Linux noteikumus

Grep un atrodiet operatorus Linux noteikumus

Sākotnēji UNIX/Linux operētājsistēmām nebija grafiskā interfeisa, jo tās bija koncentrējušās uz servera izmantošanu. Šodien šajā sakarā tie nav zemāki par Windows, tāpēc lietotāji, kas izmanto šo OS, reti zina galveno Linux komandu sintakse un mērķi. Tikmēr tas ir ļoti spēcīgs rīks, kas ļauj ātri veikt operācijas, kas, izmantojot OS pamata rīkus, ir problemātiska vai neiespējama. Šodien jūs satiksit Find un Grep operatorus, kas ir pamata visu Linux izplatīšanas failu sistēmai.

Atras un grep operatoru iecelšana

Atrast komandu Linux ir komandrindas operators, kas strādā ar failiem, kas apiet esošo hierarhiju. Tas ļauj meklēt failus, izmantojot daudzus filtrus, kā arī veikt noteiktas darbības, izmantojot failus pēc veiksmīgas meklēšanas. Starp failu meklēšanas kritērijiem ir gandrīz visi pieejamie atribūti, sākot no radīšanas dienas līdz izšķirtspējai.

Grep komanda Linux arī attiecas uz meklētājprogrammām, bet failu iekšpusē. Komandas burtiskais tulkojums ir “regulāro izpausmju globālā drukāšana”, bet zīmogs šeit nozīmē darba rezultātu secinājumu pēc noklusējuma, kas parasti ir monitors. Ar milzīgu potenciālu operators tiek izmantots diezgan bieži un ļauj meklēt vienā vai vairākos failos atbilstoši norādītajiem fragmentiem (veidnes). Tā kā Linux terminoloģija ievērojami atšķiras no šādām operētājsistēmām Windows, daudziem lietotājiem ir ievērojamas grūtības, izmantojot šīs komandas. Mēs centīsimies novērst šo trūkumu.

Grep un atrod sintakse

Sāksim ar operatora atrašanu. Failu meklēšanas komandas sintakse izskatās šādi:

Atrodiet [kur meklēt] [parametri] [-optic] [darbība]

Daži izmanto parametrus:

  • -Dziļums: meklēšana pašreizējā mapē un subcatālisti;
  • -Versija: atnesiet komandas versiju;
  • -Drukāt: parādiet pilnīgus failu nosaukumus (Linux tie var būt patvaļīgi lieli);
  • -F tipa: meklējiet tikai failus;
  • -D tipa D - tikai meklējiet direktoriju (mapes).

Pieejamo opciju saraksts (norādīts caur defisi):

  • Vārds: faila meklēšana pēc vārda;
  • Lietotājs: meklēšana pēc faila īpašnieka vārda;
  • PERM: saskaņā ar atribūtu "piekļuves režīms";
  • MTIME: līdz pēdējām faila izmaiņām (rediģēt);
  • Grupa: pēc grupas;
  • atime: līdz pēdējās faila atvēršanas datumam;
  • Jaunāks: faila meklēšana ar datumu, kas ir vairāk nekā direktīva, kas norādīta veidnē;
  • Izmērs: pēc faila lieluma baitos;
  • Nouser: meklējiet failus, kuriem nav ievadīta atribūta "īpašnieks".

Grep sintakse:

Grep [opcijas] veidne [kur meklēt]

Iespējas jāsaprot kā papildu precizējoši parametri, piemēram, apgrieztā režīma izmantošana vai noteikta rindu skaita meklēšana.

Veidne norāda, kas jāmeklē, izmantojot tieši noteiktu līniju vai regulāru izteiksmi.

Regulāru izteiksmju izmantošanas iespēja var ievērojami paplašināt meklēšanas iespējas. Standarta secinājuma norāde var būt noderīga, ja uzdevums ir filtrēt žurnālos ierakstītās kļūdas vai meklēt PID procesu PS komandas rezultātos, kas var būt vairāku lappušu.

Apsveriet visizplatītākos GRAS parametrus:

  • -B: pirms iegūtās līnijas izdošanas parādiet bloka numuru;
  • -C: Ir nepieciešams aprēķināt vēlamā fragmenta ierakstu skaitu;
  • -I: Meklēt bez reģistrācijas reģistra;
  • -N: Izdodiet līnijas numuru standarta izvades ierīcei, kurā tika atrasts vēlamais fragments vai veidne;
  • - L: Izdošanas rezultātā jābūt klāt tikai failu nosaukumiem ar atrastu meklēšanas fragmentu;
  • -S: ignorēt kļūdas izvadi;
  • -W: meklējiet fragmentu, ko abās pusēs ieskauj atstarpes;
  • -V: apgriezta meklēšana, tas ir, visu līniju parādīšana, kas nesatur noteiktu fragmentu;
  • -E: Parametrs norāda, ka seko arī regulāra izteiksme, kurai ir sava sintakse;
  • -A: Vēlamā fragmenta un iepriekšējo N līniju secinājums;
  • -BN: tas pats, bet ar līnijām iet pēc veidnes.

Tagad ir jēga pāriet no teorētiskās daļas uz praktisko.3

Komunālo pakalpojumu izmantošanas piemēri

Ja jūs zināt, kas ir kombinatorika, tad būtu jāatspoguļo patiesais iespējamo meklēšanas komandu kombināciju skaits. Mēs aprobežosimies tikai ar visnoderīgākajiem piemēriem, kas jums var būt noderīgi darba laikā.

Meklējiet tekstu failos

Ļaujiet mums ir administratora tiesības, un mums ir uzdevums atrast konkrētu lietotāju milzīgā paroles failā. Mums būs nepieciešama diezgan vienkārša komanda, kas norāda uz faila ievietošanas ceļu:

Grep nameUser /etc /passwd

Ja meklēšanas rezultāts ir pozitīvs, mēs iegūsim iegūto aptuveni šāda veida līniju:

Nameuser: X: 1021: 1021: nameUser ,,,:/home/lietotājs:/bin/bash

Ja jums jāmeklē teksta fragments, neņemot vērā reģistra reģistru, komanda izskatīsies šādi:

Gras -i "nameUser" /etc /passwd

Šajā gadījumā būs atrodams vārda user lietotājs un tā "vārdamāsa" nameUser, kā arī visas citas iespējamās kombinācijas.

Vairāku līniju noslēgšana

Ļaujiet mums iegūt visas kļūdas no loga čaulas Xorg žurnāla.baga. Uzdevumu sarežģī fakts, ka pēc kļūdainas virkne, kas satur vērtīgu informāciju, var sekot. Tiek nolemts, ja mēs piespiedam komandu parādīt vairākas līnijas, izmantojot kā veidni līniju "PP":

GRAS -A5 "PP"/var/log/xorg.0.baga

Mēs saņemam līniju, kas satur veidni un 5 līnijas pēc tās.

GRAS -C3 "pp"/var/log/xorg.0.baga

Līnijas izeja ar teksta fragmentu un trīs līnijas pirms un pēc.

Regulāru izpausmju izmantošana grep

Šis ir viens no visspēcīgākajiem Linux rīkiem, kas ievērojami paplašina meklēšanas veidnes veidošanas iespēju. Regulārām izteiksmēm ir sava sintakse, diezgan sarežģīta. Mēs tajā neiedziļināsimies, ierobežojot sevi ar RV izmantošanas piemēru. Kā jūs jau zināt, lai norādītu, ka tiek izmantota regulārā izteiksme, tiek izmantots -e parametrs.

Ļaujiet mums ziņojumu failā.2 Mums ir jānoķer visas līnijas septembrim:

Grep "^sep 09"

Rezultāts būs kaut kas līdzīgs šim:

09. septembris 01:11:45 GS124 NTPD [2243]: Laika atiestatīšana +0.197579 s

09. septembris 01:19:10 GS124 NTPD [2243]: Laika atiestatīšana +0.203484 s

Lai meklētu veidni, kas atrodas joslas līnijas galā, tiek izmantots simbols “$”:

Grep "termins.$ "Ziņojumi

Rezultāts:

17. jūnijs 19:01:19 Cloneme kodols: Log Daemon termins.

11. septembris 06:30:54 Cloneme kodols: Log Daemon termins.

Un šeit ir parastās izteiksmes izmantošanas piemērs, kas ļauj meklēt līnijas, kas satur visus skaitļus, izņemot nulli:

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

Izmantojot rekursīvu meklēšanu grepā

Ja jūs esat pazīstams ar terminu "rekursija", tad Linux, jo īpaši, tiek izmantota šī paņēmiens, lai meklētu fragmentu vairākos failos, kas atrodas katalogā, un tā subcatals. Opcija -r norāda uz rekursijas klātbūtni. Ļaujiet mums meklēt fragmentu "nosauktaisomēns.Org "failos, kas atrodas mapes subcatals /etc /apache1:

Gras -r "nosauktaisomēns.Org "/etc/apache1/

Rezultāts var būt kaut kas līdzīgs šim:

/etc/apache1/vhosts.D/ nosauktāomēns.Org

Ja faila nosaukums nav nepieciešams, mēs izmantojam -h: h:

Grep -h -r "nosauktaisomēns.Org "/etc/apache1/

Meklēt vārdus

Standarts QWE fragmenta meklēšana beigsies ar visu vārdu, kuros šis fragments, izdošana: KBQWE, QWE123, AAFRQWE32. Lai ierobežotu meklēšanu tikai ar doto fragmentu, jums jāizmanto parametrs -W:

Gras -w "qwe", kur atrast

Meklējiet divus vai vairākus vārdus

Sarežģīt uzdevumu: mums jāatrod visas līnijas, kurās tiek atrasti divi vārdi. Komanda būs šāda:

Gras -W "Word01 | Word02", kur_ atrast

Līniju skaits

Ja nepieciešams, lai aprēķinātu. Cik reizes failā ir atrodams vēlamais fragments, mēs izmantojam dizainu ar parametru -C:

Gras -c "'teksts", kur_ atrast

Parametrs -N palīdz noskaidrot, kurā līnijā tiek atrasta vēlamā veidne:

Gras -n "nuser" /etc /passwd

Apgriezta meklēšana, izmantojot grep

Dažreiz uzdevums meklēt, izmantojot grep pēc failu satura. Iespēja -v mums palīdzēs:

Gras -v "txt", kur_ atrast

Faila nosaukuma izvade

Ļaujiet jums atrast visus failus norādītajā direktorijā, kurā ir vēlamais veidne. To var izdarīt, izmantojot parametru -l. Tātad pilna komanda failu izvades izvadei, kas satur virkni "sekundārā" mapē /utt., Izskatīsies šādi:

Grep -l "sekundārais" /utt

Krāsu izvade, izmantojot grep

Uzturēšanās ar citu krāsu ir lielisks veids, kā vizualizēt vēlamo ierakstu, kas ievērojami samazina acu slodzi, ja operācija bieži tiek veikta. Izrādās, ka GRAS ir opcija šai meklēšanas rezultātu izvadei:

Grepor -krāsas "sekundārais" /utt

Mēs turpinām izskatīt piemērus, kā izmantot utilītu Linux.

Meklējiet visus failus

Lai izņemtu pašreizējā katalogā esošo failu sarakstu, mēs izmantojam komandu šādā formātā:

Atrast .

Ja jums ir jāparāda visu failu nosaukums, mēs izmantojam komandu

Atrast . -Drukāt

Faila izvade noteiktā katalogā

Lai meklētu failus mapē, ko nosaka lietotāja, mēs izmantojam komandu

Atrast ./utt

Bet kā pašreizējā katalogā var atrast failus, kas satur noteiktu fragmentu:

Atrast . -Vārds "*.Gif "

Ja meklēšana jāveic bez reģistra uzskaites, komanda ir jāmaina:

Neņemiet vērā reģistru, meklējot pēc vārda:

Atrast . -Manī "*.Gif "

Ierobežojot meklēšanas dziļumu

Vēl viens diezgan tipisks uzdevums ir meklēt failus noteiktā mapē atbilstoši dotajam nosaukumam:

Atrast . -MaxDEPTH01 1 -NAME "*.Html "

Veidnes apgriešana

Mēs jau esam apsvēruši komandas analogu, lai meklētu līnijas, kurās nav noteikts fragments. Tādā pašā veidā jūs varat darīt ar failiem, kas neatbilst dotajai veidnei:

Atrast . -NAV -NAVE "LIETOTĀJS*"

Meklēt pēc vairākiem kritērijiem

Mēs sniedzam komandrindas piemēru, izmantojot utilītu meklēšanai pēc diviem kritērijiem, izmantojot operatoru NOT (izslēgšanas):

Atrast . -Vārds "Lietotājs" -NOT -NAME "*.Html "

Šajā gadījumā faili, kuru nosaukumā ir lietotāja fragments, bet kuriem ir paplašinājums, netiks atrasti. Izņēmuma operatora vietā varat izmantot loģisko "/" vai "::

Atrast -Name "*.js "-o -Name"*.SQL "

Šajā gadījumā mēs iegūsim pilnu failu sarakstu ar abiem paplašinājumiem, kas atrodas pašreizējā direktorijā.

Meklēt vairākos katalogos

Ja mums jāatrod faili divos katalogos, vienkārši norādiet no spraugas:

Atrast -type f ./test01 ./test02 -Name "*.SQL "

Meklējiet slēptos failus

Linux, tāpat kā Windows, ir slēpti faili, kas, izmantojot komandu Atrodi, netiks parādīti bez īpaša simbola. Šis simbols ir Tilda, un direktīvai būs šāds izskats:

Atrast ~ -Name ".*"

Meklējiet failus Linux pēc atļaujām

Dažreiz ir jāfiltrē katalogs noteiktai tiesību maskai. Piemēram, ja mums jāatrod faili ar atribūtu 0661, mēs izmantojam komandu:

Atrast . -PERM 0661

Failu filtrēšanas uzdevums ar atribūtu "Tikai lasīšanai" ir atrisināts šādi:

Atrast /etc /user -perm /u = r

Bet kā izskatīsies izpildāmu failu meklēšana ETC katalogā:

Atrast /utt -perm /a = x

Meklējiet failus pēc grupām/lietotājiem

Administratoram bieži ir jāsaskaras ar uzdevumu meklēt failus, kas ir konkrēta lietotāja un/vai grupas īpašums. Meklēt lietotājam:

Atrast . -Lietotājs Slavko

Lietotāju grupām tiek izmantots vēl viens parametrs:

Atrast /var -grupu devs

Meklēšana pēc pēdējās modifikācijas datuma

Faila datuma redzamais formāts Linux OS ir tieši tā modifikācijas datums (tas pats princips tiek izmantots operētājsistēmā Windows). Lai izveidotu sarakstu pēc datuma, tiek izmantota mimta opcija. Pieņemsim, ka mums jāatrod faili, kas mainīti pirms diviem mēnešiem:

Atrast /Home -MITME 60

Starp faila atribūtiem ir datums ar tā pēdējo atklāšanu (neveicot izmaiņas). Šādus failus parāda šāda komanda:

Atrast /home -atime 60

Jūs varat arī iestatīt laika intervālu. Lai meklētu failus, kas modificēti no četriem līdz diviem mēnešiem, mēs izmantojam direktīvu:

Atrast /home -Mimtht +60 -Mime -120

Bet kā atrast svaigi mainītus failus (pirms divām stundām):

Atrast /home -cmin 120

Meklējiet failus pēc lieluma

Aizdomas, ka kāds filmām izmanto disku? Mēs meklējam failu lielumu 1.4 GB:

Atrast / -ize 1400m

Vai izmantojiet diapazonu:

Atrodiet / -izizotus +1400 m -size -2800m

Meklējiet tukšus failus/katalogus

Jā, nebrīnieties. Pasūtījuma atjaunošanas uzdevums plašsaziņas līdzekļos ir raksturīgs ne tikai Android OS. Linux tiek nolemts ar šādas direktīvas palīdzību:

Atrast /var -type f -Epty

Darbību piemērs ar atrastajiem failiem

Linux komanda Find komanda var rekursīvi veikt noteiktas darbības ar šiem failiem, meklējot, kuru jūs veicat. Lai izpildītu failu komandas, jums jāizmanto EXEC parametrs. Tātad direktīva, lai parādītu informāciju par visiem failiem, izmantojot komandu LS, izskatīsies šādi:

Atrast . -exec ls -l \;

Bet kā vienkārši jūs varat izdzēst pagaidu failus ar doto masku direktorijā /mājas /temp:

Atrast /tmp -type f -Name "*.html ”-exec rm -f \;

Protams, iesācējam, izmantojot komandrindu ar milzīgu skaitu iespēju, šķiet nedaudz sarežģīts, bet Linux tas ir lietu secībā. Un kā jūs atrisinātu šeit aprakstītās problēmas Windows? Tas pats. Šajā aspektā Linux ir acīmredzami priekšā.