Makseviisid Abuse

Failide otsimine sisu järgi Linuxis: ack ja ripgrep

03.05.2023, 23:33

Failiotsingu kasutamine Linuxis sisu järgi võib oluliselt vähendada aega ja vaeva, kui otsite konkreetset teavet suurtes ja keerulistes failisüsteemides.

Miks on vaja otsida faile sisu järgi

See otsing võib olla eriti kasulik, kui soovite leida faile, mis sisaldavad teatud stringi või märksõna, või kui soovite leida kõik failid, mis vastavad teatud mustrile või kriteeriumile.

Failide otsimist sisu järgi saab kasutada mitmesuguste ülesannete jaoks, näiteks leidmiseks:

  • konkreetne tekst suurtest tekstifailidest
  • teatud seadistusi või käske sisaldavad konfiguratsioonifailid ja skriptid
  • faile, mis sisaldavad konkreetseid andmeid, näiteks kasutajanimesid või telefoninumbreid.
  • failid sisutüübi järgi, näiteks kõigi JPEG-pilte või PDF-dokumente sisaldavate failide leidmine.

Failide otsimise üldine eesmärk sisu järgi on lihtsustada failisüsteemiga töötamist ja vajaliku teabe leidmist failisüsteemist.

ack

Alustame ack utiliidiga. See loodi 2005. aastal alternatiivina grep'ile ja sai kiiresti populaarseks arendajate seas.

Sellel on grep-i ees mitmeid eeliseid, sealhulgas:

  • targemad failide ja erandite otsingud. Ack otsib vaikimisi ainult selliseid faile, millel võib olla mõtet, näiteks jättes välja .svn või .git kaustad. Ja te saate lisada oma reegleid ja erandeid;
  • Ack otsib vaikimisi peidetud faile ja katalooge;
  • Ack ei püüa otsida kõikjalt, isegi süsteemikaustadest, nagu grep. See tähendab, et saate hõlpsasti leida oma süsteemis peidetud faile.

Näiteid ack kasutamise kohta:

  • Leia kõik failid praegusest kaustast ja selle alamkaustadest, mis sisaldavad sõna "test": ack "test"
  • Sama asi, kuid välistades .bak laiendiga failid : ack "test" --ignore-file=match:/.bak$/
  • Leida praeguses kaustas kõik failid, mis sisaldavad sõna "hello" ja väljastada iga faili esimesed 2 rida: ack "hello" --heading --max-count=2

ripgrep

Teine huvitav tööriist on ripgrep. See on paljuski sarnane ack-ga, kuid kasutab kiiremat otsingualgoritmi, mis teeb selle eriti kasulikuks suurte projektide puhul.

Siin on mõned näited:

  1. Leia kõik failid praegusest kaustast ja selle alamkaustadest, mis sisaldavad sõna "test": rg "test"
  2. Sama, kuid jätab välja failid laiendiga .bak: rg "test" --glob "!*.bak"
  3. Leiab praeguses kaustas kõik failid, mis sisaldavad sõna "hello" ja väljastab iga faili esimesed 2 rida: rg "hello" --heading --max-columns=2

Lõpuks tasub mainida fzf. See ei ole lihtsalt stringi otsija nagu ack ja ripgrep. Fzf on utiliit, mida kasutatakse failide, kaustade ja elementide leidmiseks nimekirjas. Muidu töötab ta sarnaselt ack/ripgrepiga, kuid lisatud on võimalus tulemusi otse filtreerida. Siin on mõned näited:

  • Otsige oma arvutist F-tähega algavaid faile: locate F | fzf -m
  • Praegusest kaustast väljuda ja minna soovitud kataloogi: cd **<TAB> | fzf
  • Valige SVN-revisjon ja kopeerige number lõikelauale: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Loodetavasti aitavad need tööriistad leida vajalikud failid ja stringid kiiresti ja tõhusalt. Ükskõik millise neist te valite, pakuvad nad kõik täiustatud otsinguid, mis võivad teie tööd märkimisväärselt kiirendada.