Mokėjimo būdai Abuse

Failų paieška pagal turinį "Linux": ack ir ripgrep

03.05.2023, 23:33

Naudojant failų paiešką pagal turinį "Linux" sistemoje, galima gerokai sumažinti laiko ir pastangų, ieškant konkrečios informacijos didelėse ir sudėtingose failų sistemose.

Kodėl reikia ieškoti failų pagal turinį

Ši paieška gali būti ypač naudinga, kai norite rasti failus, kuriuose yra tam tikra eilutė ar raktažodis, arba kai norite rasti visus failus, atitinkančius tam tikrą šabloną ar kriterijų.

Failų paieška pagal turinį gali būti naudojama įvairioms užduotims atlikti, pvz:

  • konkretų tekstą dideliuose tekstiniuose failuose
  • konfigūracijos failus ir skriptus, kuriuose yra tam tikrų nustatymų ar komandų
  • failus, kuriuose yra konkrečių duomenų, pavyzdžiui, naudotojų vardų ar telefono numerių
  • failus pagal turinio tipą, pavyzdžiui, rasti visus failus, kuriuose yra JPEG vaizdų arba PDF dokumentų.

Bendras failų paieškos pagal turinį tikslas - palengvinti darbą su failų sistema ir rasti failų sistemoje reikiamą informaciją.

ack

Pradėkime nuo ack įrankio. Jis buvo sukurtas 2005 m. kaip grep alternatyva ir greitai išpopuliarėjo tarp programuotojų.

Jis turi keletą pranašumų prieš grep, pvz:

  • išmanesnė failų ir išimčių paieška. Ack pagal numatytuosius nustatymus ieško tik failuose, kurie gali būti prasmingi, pavyzdžiui, neįtraukia .svn arba .git aplankų. Be to, galite pridėti savo taisykles ir išimtis;
  • Ack pagal numatytuosius nustatymus ieško paslėptų failų ir katalogų;
  • Ack nebando ieškoti visur, net sistemos aplankuose, kaip grep. Tai reiškia, kad galite lengvai rasti sistemoje paslėptus failus.

Pavyzdžiai, kaip naudoti ack:

  • Raskite visus dabartiniame aplanke ir jo pakatalogiuose esančius failus, kuriuose yra žodis "test": ack "test".
  • Tas pats, bet neįtraukite failų su plėtiniu .bak: ack "test" --ignore-file=match:/.bak$/
  • Rasti visus dabartiniame aplanke esančius failus, kuriuose yra eilutė "hello", ir išvesti pirmąsias 2 kiekvieno failo eilutes: ack "hello" --heading --max-count=2

ripgrep

Antroji įdomi priemonė yra ripgrep. Ji daugeliu atžvilgių panaši į ack, tačiau naudoja greitesnį paieškos algoritmą, todėl yra ypač naudinga dideliems projektams.

Štai keletas pavyzdžių:

  1. rg " test" : rg "test"
  2. Tas pats, bet išskyrus failus su plėtiniu .bak: rg "test" --glob "!*.bak"
  3. Rasti visus dabartiniame aplanke esančius failus, kuriuose yra eilutė "hello", ir išvesti pirmąsias dvi kiekvieno failo eilutes: rg "hello" --heading --max-columns=2

Pabaigoje verta paminėti fzf. Tai ne tik eilučių ieškiklis, kaip ack ir ripgrep. Fzf naudojamas kaip failų, aplankų ir elementų sąraše paieškos įrankis. Kitais atžvilgiais ji veikia panašiai kaip ack / ripgrep, tačiau papildomai suteikiama galimybė gyvai filtruoti rezultatus. Štai keletas pavyzdžių:

  • F raide prasidedančių failų paieška kompiuteryje: locate F | fzf -m
  • Išeikite iš dabartinio aplanko ir pereikite į norimą katalogą: cd **<TAB> | fzf
  • Pasirinkite SVN peržiūrą ir nukopijuokite jos numerį į iškarpinę: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Tikimės, kad šios priemonės padės greitai ir efektyviai rasti reikiamus failus ir eilutes. Kad ir kurią pasirinktumėte, visos jos siūlo išplėstinę paiešką, kuri gali gerokai pagreitinti jūsų darbą.