Cum să găsiți un șir sau un cuvânt specific în fișiere și directoare


Doriți să găsiți toate fișierele care conțin un anumit cuvânt sau șir de text pe întregul dvs. sistem Linux sau într-un anumit director. Acest articol vă va ghida cum să faceți acest lucru, veți învăța cum să căutați recursiv prin directoare pentru a găsi și lista toate fișierele care conțin un anumit șir de text.

O modalitate simplă de a rezolva acest lucru este utilizarea instrumentului de căutare a modelelor grep, este un utilitar puternic, eficient, de încredere și cel mai popular de linie de comandă pentru găsirea de modele și cuvinte din fișiere sau directoare pe sisteme asemănătoare Unix.

Citiți și: 11 comenzi avansate Linux „Grep” pentru clasele de caractere și expresiile paranteze

Comanda de mai jos va lista toate fișierele care conțin o linie cu textul „check_root ”, căutând recursiv și agresiv în directorul ~/bin.

grep -Rw ~/bin/ -e 'check_root'

Unde opțiunea -R îi spune grep să citească toate fișierele din fiecare director, recursiv, urmând legături simbolice numai dacă acestea se află pe linia de comandă și opțiunea -w< îi cere să selecteze numai acele linii care conțin potriviri care formează cuvinte întregi, iar -e este folosit pentru a specifica șirul (modelul) care trebuie căutat.

Ar trebui să utilizați comanda sudo când căutați anumite directoare sau fișiere care necesită permisiuni root (cu excepția cazului în care vă gestionați sistemul cu contul root).

 
sudo grep -Rw / -e 'check_root'	

Pentru a ignora diferențele dintre majuscule și litere, utilizați opțiunea -i după cum se arată:

grep -Riw ~/bin/ -e 'check_root'

Dacă doriți să aflați linia exactă în care există șirul de text, includeți opțiunea -n.

grep -Rinw ~/bin/ -e 'check_root'

Presupunând că există mai multe tipuri de fișiere într-un director în care doriți să căutați, puteți specifica și tipul de fișiere care trebuie căutate, de exemplu, prin extensia lor folosind opțiunea --include.

Acest exemplu îi instruiește pe grep să caute numai prin toate fișierele .sh.

grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

În plus, este posibil să căutați mai mult de un model, folosind următoarea comandă.

grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

Asta este! Dacă cunoașteți orice alt truc din linia de comandă pentru a găsi șir sau cuvânt în fișiere, împărtășiți-ne sau puneți întrebări cu privire la acest subiect, utilizați formularul de comentarii de mai jos.