Finn filer som inneholder spesifikk tekst i Linux
Linux, uavhengig av distroen du bruker, kommer med en rekke GUI-verktøy som gjør det mulig å søke etter filer. Mange moderne filbehandlere støtter filsøk rett i fillisten. Det er imidlertid en rekke situasjoner når du trenger å bruke konsollen, for eksempel under en SSH-økt eller når X-serveren ikke starter. Her er hvordan du raskt kan finne filer som inneholder spesifikk tekst ved å bruke terminalen.
Hvis du kan bruke GUI, er det ikke noe problem å søke etter filer. I mitt favoritt XFCE-skrivebordsmiljø lar Thunar-filbehandleren søke etter filer ved å skrive inn filnavnet direkte i fillisten.
Ingen av filbehandlerne jeg har prøvd tillater imidlertid søk etter filinnhold.
For å omgå denne begrensningen når du arbeider i en GUI-økt, kan du bruke Сatfish. Сatfish er et populært søkeverktøy. Det lar deg søke etter filinnhold. Du må klikke på tannhjulikonet og aktivere alternativet Søk i filinnhold.
Men når det kommer til terminalen, kan du ikke bruke noe grafisk verktøy. Dessuten synes jeg ikke Catfish er nyttig og foretrekker klassiske konsollverktøy fremfor det. Her er metodene og verktøyene jeg bruker.
For å finne filer som inneholder spesifikk tekst i Linux, gjør følgende.
- Åpne din favorittterminalapp. XFCE4-terminal er min personlige preferanse.
- Skriv inn følgende kommando:
finn ./ -type f -exec grep -l "tekst å finne" {} \;
- Dette vil produsere listen over filer som inneholder den nødvendige tekstdelen.
Finn-kommandoen vil søke etter filer fra gjeldende katalog, "./". Du kan spesifisere ønsket bane i stedet.
Valget -type f ber den kun søke etter filer og ekskludere kataloger. Du kan også få den til å søke bare etter en bestemt filtype ved å legge til alternativet som følger:finn ./ -type f -iname "*.txt" -exec grep -l "tekst å finne" {} \;
Se følgende skjermbilde:
De -exec alternativet kaller opp grep-verktøyet for hver av de samsvarende filene for å sjekke innholdet. Hvis teksten finnes i filen, vil navnet bli lagt til utdataene, takket være -l alternativ.
Alternativer
Det finnes alternativer til metodene beskrevet ovenfor. Først av alt kan du bare bruke grep verktøy. Prøv følgende kommando:
grep -iRl "tekst å finne" ./
- -i står for ignore text case.
- -R står for rekursiv filbehandling.
- -l står for "vis filnavnet, ikke selve resultatet".
Som du kan se, er denne metoden mindre fleksibel enn finne kommando.
Midnattssjef
En annen metode jeg ofte bruker er Midnight Commander (mc), konsollens filbehandlingsapp. I motsetning til find eller grep, er ikke mc inkludert som standard i alle Linux-distros jeg har prøvd. Du må kanskje installere det selv.
For å finne filer som inneholder spesifikk tekst ved hjelp av Midnight Commander, start appen og trykk følgende sekvens på tastaturet:
Alt + Skifte + ?
Dette åpner søkedialogen.
Fyll ut delen "Filnavn:". Du kan spesifisere noe som "*.txt" for å søke etter teksten din kun i tekstfiler.
Fyll nå ut Innhold: eske. Skriv inn teksten som filene inneholder og trykk Enter-tasten.
Den vil finne alle filer som samsvarer med kriteriene.
Det er det.