În mod implicit, majoritatea instrumentelor de căutare privesc numele fișierelor, nu conținutul fișierelor. Cu toate acestea, cel mai faimos program de căutare GNU, grep
, va căuta în fișiere cu steagurile corecte. Aici vă vom arăta cum puteți găsi anumite cuvinte într-un fișier pe Linux.
Utilizarea grep pentru a găsi un cuvânt specific într-un fișier
În mod implicit, grep caută prin conținutul fișierelor, precum și numele fișierelor acestora. Este inclus în majoritatea sistemelor Linux și este, în general, identic în distribuții. Acestea fiind spuse, cutiile Linux mai mici sau mai puțin puternice ar putea prefera să ruleze o comandă diferită, cum ar fi ack
.
În funcție de modul în care este codat fișierul, grep nu poate fi întotdeauna capabil să privească în interior. Dar pentru majoritatea formatelor bazate pe text, grep poate scana textul fișierului după modelul specificat.
grep -Rw '/path/to/search/' -e 'pattern'
-R
flag setează grep în modul recursiv, navigând prin toate directoarele conținute în directorul specificat. -w
pavilionul caută potriviri întregi de cuvinte. Aceasta înseamnă că „roșu” se va potrivi doar cu „roșu” înconjurat de caractere spațiale și nu „redundant” sau „obosit”. -e
pavilion prefață modelul de căutat. Suportă expresii regulate în mod implicit.
Pentru a accelera grep, puteți utiliza --exclude
și --include
steaguri pentru a limita căutarea la anumite tipuri de fișiere. De exemplu, --exclude=*.csv
nu va căuta în niciun fișier cu extensia .csv. --include=*.txt
pe de altă parte, va căuta numai în fișiere cu extensia .txt. Steagul poate fi adăugat imediat după comanda grep, după cum se arată mai jos:
grep --exclude=*.csv -Rw '/path/to/search' -e 'pattern'
De asemenea, puteți exclude directoare specificate urmând formatul de mai jos:
grep --exclude-dir={dir1,dir2,*_old} -Rw '/path/to/search' -e 'pattern'
Această comandă nu va căuta în niciun director din directorul de lucru actual numit dir1, dir2 sau care să se potrivească cu modelul * _old, eliminându-le din procesul de căutare. Acesta va executa căutarea specificată recursivă, potrivită cu cuvinte complete pe toate celelalte fișiere din directorul de lucru actual.
Folosind find pentru a găsi un anumit cuvânt într-un fișier
In timp ce find
sintaxa comenzii este mai complicată decât grep, unii o preferă.
find . -name "*.php" -exec grep "pattern" {} ;
Această comandă va folosi find’s -exec
flag pentru a transmite fișierele găsite către grep pentru căutare. Cu un aranjament inteligent de sintaxă, puteți utiliza căutarea mai rapidă a sistemului de fișiere pentru a localiza tipurile de fișiere specifice pe care doriți să le căutați, apoi le introduceți în grep pentru a căuta în fișiere.
Rețineți că găsiți arată doar numele fișierelor, nu conținutul. De aceea grep este necesar pentru a căuta textul și conținutul fișierului. Steagurile grep normale ar trebui să fie pe deplin operaționale din interiorul -exec
steag.
Utilizarea ack pentru a găsi un cuvânt specific într-un fișier
Comanda ack este probabil cel mai rapid instrument de căutare, dar nu este la fel de populară ca opțiunile de mai sus. Comanda de mai jos va căuta în directorul curent.
ack 'pattern'
Dacă doriți să căutați într-un anumit fișier sau director, puteți adăuga acel fișier sau calea complet calificată la căutarea dvs.
ack 'pattern' /path/to/file.txt
Concluzie
Pentru majoritatea oamenilor din cele mai multe situații, grep este cel mai bun instrument de căutare disponibil pe scară largă. De asemenea, puteți consulta alte instrumente de căutare, cum ar fi RipGrep, pentru opțiuni de căutare mai rapide