Hvordan bruke grep til å søke rekursivt

Hvordan bruke grep til å søke rekursivt
"GREP" -instruksjonen har vært veldig kjent blant Linux -brukere for sine søkefunksjoner. Spørringen "grep" fungerer annerledes mens de brukes med forskjellige flagg for rekursiv søk. Det mest brukte flagget til GREP-kommandoen er “-r” som innebærer å søke i den gjeldende katalogen. La oss ha noen eksempler på å gjøre et rekursivt søk i Ubuntu 20.04 Bruke GREP -kommandoen. Start fra å starte terminalapplikasjonen via hurtigtasten “Ctrl+Alt+T”.

Søk uten katalogsti

Den mest enkle og enkleste måten for rekursivt søk er å bruke et enkelt “-r” -flagg i GREP-kommandoen og et matchende mønster uten noen nevnt bane. Vi har brukt GREP -kommandoen for å søke etter et mønster “John” i filene. "-R" -flagget vil søke i alle filene som ligger i hjemmet eller gjeldende katalog til Ubuntu 20.04 og i undermappene i hjemmekatalogen også. Du kan se at den viser filstiene som også har den aktuelle kampen og viser den matchede teksten i den filen. De to første filene er lokalisert i underkatalogen for Documents, mens de to andre er lokalisert i hjemmekatalogen. Dette betyr at den også har søkt fra alle undermapper i den gjeldende katalogen.

$ grep -r “John”

La oss rekursivt søke etter et annet ord, "hjerte" ved å bruke GREP-instruksjonen med "-r" -flagget. Kommandoutgangen viser at den er funnet i de to filene. Den ene filen ligger i hjemmekatalogen mens den andre er i underkatalogen til Home, i.e., Dokumenter. Begge filene inneholder samme navn.

$ grep -r “hjerte”

La oss se på en annen samme forekomst med et annet matchende mønster i GREP -kommandoen. Så vi har brukt mønsteret “CSS” for å bli søkt fra systemet rekursivt.

$ grep -r “CSS”

En annen måte er å bruke "*" "-tegnet til å søke over mappene og undermappene. Så vi har søkt på den enkle karakteren “A” og funnet det i hver tekstfil i hjemmekatalogen og dens undermapper.

$ grep -r “a” *

La oss få et rekursivt søk ved hjelp av GREP -kommandoen, men på en annen måte. Vi vil søke i et mønster mens teksten i filene ikke vises i terminalen ved å bruke "-l" -flagget i instruksjonen. Bare filnavnet eller banen vil bli gitt i utgangen som viser at det gitte mønsteret er funnet. Så vi har prøvd den samme spørringen med tillegg av “-L” -flagget for å søke etter mønsteret “CSS”. Den viser de relaterte filene og deres baner i utgangen.

$ grep -r -l “CSS”

Søk med katalogsti

Nå vil vi se arbeidet med GREP rekursive kommando på katalogstien gitt. Så vi vil ha søkt etter tre forskjellige mønstre i underkatalogen "Nedlastinger" i Home -mappen. Stien til nedlastingsmappene er oppgitt på bildet i GREP -kommandoen. Vi har ingenting i retur, da mønsteret ikke har matchet eller blitt funnet.

$ grep -r CDD/Home/Linux/nedlastinger
$ grep -r css/home/linux/nedlastinger
$ grep -r poet/hjem/linux/nedlastinger

La oss søke etter et annet mønster "er" i nedlastingsmappen ved å bruke den samme instruksjonen. Vi har funnet to utganger for dette mønsteret. Utgangen viser filstiene sammen med teksten. Det fremhevet også mønsteret matchet, jeg.e., "er".

$ grep -r er/hjemme/linux/nedlastinger

Vi har søkt på et annet mønster, "OK" i nedlastingsmappen og fikk bare en utdata til gjengjeld, da det bare samsvarer med en enkelt fil.

$ grep -r ok/home/linux/nedlastinger

Det samme mønsteret “OK” er blitt søkt fra den forskjellige underkatalogen denne gangen, jeg.e., Dokumenter. GREP -kommandoen returnerte ingenting da mappen ikke inneholder noen fil med et bestemt mønster "OK" i den.

$ grep -r er/hjemme/linux/dokumenter

Du kan også søke rekursivt etter strengverdien. Så vi har gitt IP -adressen som en streng og nevnt banen. Denne kommandoen vil søke i alle filene og mappene i "etc" -katalogen for å søke i strengmønsteret. Utgangen viser et enkelt resultat.

$ grep -r “192.168.10.1 ” /etc /

Søk i flere mønstre

Vi hadde sett på eksemplene for å søke etter det eneste mønsteret ved hjelp av GREP rekursiv instruksjon. Nå vil vi se måten å søke på flere mønstre også rekursivt. Så vi har brukt GREP-kommandoen sammen med "-RW" -flagget. Det indikerer at flere søkene har skjedd. Etter dette flagget kan du også nevne banen. Vi har brukt den uten vei til å søke i hjemmekatalogen og undermappene. "-E" -flagget har blitt brukt her for å indikere enkeltmønsteret. Du kan bruke mange "-e" -flagg i henhold til antall mønstre du vil søke. Vi har bare søkt på to mønstre her med "-e". Vi har funnet de 4 filene i utdataene matchet. Tre filer inneholder mønsteret “CSS”, og 1 inneholder mønsteret “OK” innenfor.

$ grep -rw -e ok -e css

Du kan også bruke GREP -kommandoen til å søke i flere mønstre i den spesifikke filen. For dette må du fjerne “-RW” -flagget fra spørringen og legge til “-e” -flagg så mye du vil. Men du må nevne filnavnet på slutten, som demonstrert nedenfor. Den viser all teksten fra filen og fremhever det samsvarende mønsteret.

$ grep -e “flott” -e “css” -e “er” -e “hjerte” nytt.tekst

Søk med "Inkluder" flagg

Inkluderings -nøkkelordet har blitt brukt til å spesifisere filtypene som kun blir søkt på. Ingen andre filer vil bli søkt. Så i det første tilfellet kunne vi ikke få noe.

$ grep -r -include = ”*txt” “OK”/Home/Linux/
$ grep -r -include = ”*txt” “Ny”/Home/Linux/

Innenfor vår andre sak har vi funnet en enkelt utgang.

Et annet mønster, “CSS” har blitt brukt til rekursiv søk og fått tre resultater, som demonstrert på bildet.

$ grep -r -include = ”*txt” “CSS”/Home/Linux/

Konklusjon

Det rekursive søket er påvist i denne guiden ved hjelp av GREP -kommandoen. Kommandoen “grep” har brukt mange flagg for å jobbe annerledes mens du gjør et rekursivt søk, i.e., “-R” og “Inkluder”. Opplæringen forklarer også det rekursive søket med og uten katalogstiene gitt i GREP -kommandoen. Dermed inneholder denne artikkelen et knippe lett å gjøre eksempler for brukerne å lære rekursivt søk lettest.