Metode de plată Abuse

Căutarea fișierelor după conținut în Linux: ack și ripgrep

03.05.2023, 23:33

Utilizarea căutării fișierelor după conținut în Linux poate reduce semnificativ timpul și efortul de căutare a informațiilor specifice în sisteme de fișiere mari și complexe.

De ce trebuie să căutați fișiere după conținut

Această căutare poate fi deosebit de utilă atunci când doriți să găsiți fișiere care conțin un anumit șir sau cuvânt cheie sau când doriți să găsiți toate fișierele care corespund unui anumit model sau criteriu.

Căutarea fișierelor după conținut poate fi utilizată pentru diverse sarcini, cum ar fi găsirea:

  • text specific în fișiere text mari
  • fișiere de configurare și scripturi care conțin anumite setări sau comenzi
  • fișiere care conțin date specifice, cum ar fi nume de utilizatori sau numere de telefon
  • fișiere după tipul de conținut, cum ar fi căutarea tuturor fișierelor care conțin imagini JPEG sau documente PDF.

Scopul general al căutării fișierelor după conținut este de a facilita lucrul cu sistemul de fișiere și de a găsi informațiile de care aveți nevoie în sistemul de fișiere.

ack

Să începem cu utilitarul ack. Acesta a fost creat în 2005 ca o alternativă la grep și a devenit rapid popular printre dezvoltatori.

Are mai multe avantaje față de grep, inclusiv:

  • căutări mai inteligente în fișiere și excepții. În mod implicit, Ack caută numai în fișiere care ar putea avea sens, de exemplu, excluzând folderele .svn sau .git. Și puteți adăuga propriile reguli și excepții;
  • Ack caută implicit fișiere și directoare ascunse;
  • Ack nu încearcă să caute peste tot, chiar și în folderele de sistem, ca grep. Acest lucru înseamnă că puteți găsi cu ușurință fișiere ascunse pe sistem.

Exemple de utilizare a ack:

  • Găsiți toate fișierele din folderul curent și subfolderele acestuia care conțin cuvântul "test": ack "test"
  • Același lucru, dar excluzând fișierele cu extensia .bak: ack "test" --ignore-file=match:/.bak$/
  • Găsiți toate fișierele din folderul curent care conțin șirul "hello" și emiteți primele 2 linii ale fiecărui fișier: ack "hello" --heading --max-count=2

ripgrep

Al doilea instrument interesant este ripgrep. Este similar cu ack în multe privințe, dar utilizează un algoritm de căutare mai rapid, ceea ce îl face deosebit de util pentru proiectele mari.

Iată câteva exemple:

  1. Găsiți toate fișierele din folderul curent și subfolderele sale care conțin cuvântul "test": rg "test"
  2. La fel, dar excluzând fișierele cu extensia .bak: rg "test" --glob "!*.bak"
  3. Găsiți toate fișierele din folderul curent care conțin șirul "hello" și emiteți primele 2 linii ale fiecărui fișier: rg "hello" --heading --max-columns=2

La sfârșit merită menționat fzf. Nu este doar un căutător de șiruri de caractere precum ack și ripgrep. Fzf este folosit ca un utilitar pentru a găsi fișiere, foldere și elemente într-o listă. În rest, funcționează similar cu ack/ripgrep, dar cu posibilitatea suplimentară de a filtra live rezultatele. Iată câteva exemple:

  • Căutați fișierele care încep cu litera F pe computer: locate F | fzf -m
  • Ieșiți din folderul curent și mergeți la directorul dorit: cd **<TAB> | fzf
  • Selectați revizuirea SVN și copiați numărul în clipboard: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Sperăm că aceste instrumente vă vor ajuta să găsiți rapid și eficient fișierele și șirurile de caractere de care aveți nevoie. Oricare ați alege, toate oferă căutări avansate care vă pot accelera munca considerabil.