Com trobar una cadena o paraula específica als fitxers i directoris


Voleu trobar tots els fitxers que contenen una paraula o una cadena de text en particular a tot el vostre sistema Linux o a un directori determinat. Aquest article us guiarà sobre com fer-ho, aprendràs a explorar de manera recursiva els directoris per trobar i llistar tots els fitxers que contenen una cadena de text determinada.

Una manera senzilla de resoldre-ho és utilitzant l'eina de cerca de patrons grep, és una utilitat de línia d'ordres potent, eficient, fiable i més popular per trobar patrons i paraules d'arxius o directoris en sistemes semblants a Unix.

L'ordre següent enumerarà tots els fitxers que contenen una línia amb el text \check_root, cercant de manera recursiva i agressiva al directori ~/bin.

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

On l'opció -R diu a grep que llegeixi tots els fitxers de cada directori, de forma recursiva, seguint enllaços simbòlics només si es troben a la línia d'ordres i l'opció -w li indica que seleccioneu només aquelles línies que continguin coincidències que formen paraules senceres i s'utilitza -e per especificar la cadena (patró) a cercar.

Hauríeu d'utilitzar l'ordre sudo quan cerqueu determinats directoris o fitxers que requereixen permisos root (tret que gestioneu el vostre sistema amb el compte root).

 
$ sudo grep -Rw / -e 'check_root'	

Per ignorar les distincions entre majúscules i minúscules, utilitzeu l'opció -i tal com es mostra:

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

Si voleu saber la línia exacta on hi ha la cadena de text, incloeu l'opció -n.

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

Suposant que hi ha diversos tipus de fitxers en un directori en què voleu cercar, també podeu especificar el tipus de fitxers a cercar, per exemple, per la seva extensió utilitzant l'opció --include.

Aquest exemple indica al grep que només busqui tots els fitxers .sh.

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

A més, és possible cercar més d'un patró, utilitzant l'ordre següent.

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

Això és! Si coneixeu algun altre truc de la línia d'ordres per trobar una cadena o una paraula als fitxers, compartiu-lo amb nosaltres o feu qualsevol pregunta sobre aquest tema, utilitzeu el formulari de comentaris a continuació.