una texto regulares para palabras palabra linea expresiones exacta egrep contar comando buscar archivos grep

texto - ¿Cómo puedo usar grep para encontrar una palabra dentro de una carpeta?



grep buscar palabra exacta (11)

  1. grep -r "yourstring" * Encontrará "yourstring" en todos los archivos y carpetas

Ahora, si desea buscar dos cadenas diferentes al mismo tiempo, siempre puede usar la opción E y agregar palabras para la búsqueda. ejemplo después del descanso

  1. grep -rE "yourstring|yourotherstring|$" * buscará ubicaciones de lista donde yourstring o yourotherstring

En Windows, habría hecho una búsqueda para encontrar una palabra dentro de una carpeta. De manera similar, quiero saber si una palabra específica aparece dentro de un directorio que contiene muchos subdirectorios y archivos. Mis búsquedas de sintaxis grep muestran que debo especificar el nombre del archivo, es decir, el nombre de la grep string filename .

Ahora, no sé el nombre del archivo, entonces, ¿qué hago? Un amigo sugirió hacer grep -nr string , pero no sé qué significa esto y no obtuve ningún resultado (no hay respuesta hasta que emito un Ctrl + C ).


¿Por qué no hacer una búsqueda recursiva para encontrar todas las instancias en subdirectorios?

grep -r ''text'' *

Esto funciona como un encanto.


La respuesta que seleccionó está bien, y funciona, pero no es la forma correcta de hacerlo, porque:

grep -nr yourString* .

Esto realmente busca la cadena "yourStrin" y "g" 0 o muchas veces.

Así que la forma correcta de hacerlo es:

grep -nr /w*yourString/w* .

Este comando busca la cadena con cualquier carácter antes y después en la carpeta actual.


No uses grep. Descargar Silver Searcher o ripgrep . Ambos son sobresalientes y mucho más rápidos que grep o ack con un montón de opciones.


Otra opción que me gusta usar:

find folder_name -type f -exec grep your_text {} /;

-tipo f te devuelve solo archivos y no carpetas

-exec y {} ejecuta el grep en los archivos que se encontraron en la búsqueda (la sintaxis exacta es "-exec comando {}").


Similar a la respuesta publicada por @eLRuLL, una forma más fácil de especificar una búsqueda que respete los límites de palabras es usar la opción -w :

grep -wnr "yourString" .


También hay:

find directory_name -type f -print0 | xargs -0 grep -li word

pero eso podría ser un poco demasiado para un principiante.

find es un directorio de uso general walker / lister, -type f significa "buscar archivos simples en lugar de directorios y canalizaciones con nombre y lo que tenga", -print0 significa "imprimirlos en la salida estándar usando caracteres nulos como delimitadores". La salida de find se envía a xargs -0 y eso toma su entrada estándar en fragmentos (para evitar las limitaciones de longitud de la línea de comando) utilizando caracteres nulos como separador de registro (en lugar de la nueva línea estándar) y la grep -li word aplica a cada conjunto de archivos. En la grep , -l significa "enumerar los archivos que coinciden" y -i significa "no distingue mayúsculas y minúsculas"; por lo general, puede combinar las opciones de un solo carácter para que vea -li más frecuencia que -l -i .

Si no usa -print0 y -0 , tendrá problemas con los nombres de archivos que contienen espacios, por lo que usarlos es un buen hábito.


grep -nr string my_directory

Notas adicionales: esto satisface la sintaxis grep [options] string filename porque en los sistemas similares a Unix, un directorio es un tipo de archivo (hay un término "archivo regular" para referirse específicamente a las entidades que se llaman simplemente "archivos" en Windows ).

grep -nr string lee el contenido para buscar desde la entrada estándar, es por eso que solo espera su entrada y deja de hacerlo al presionar ^ C (también se detendría en ^ D, que es la combinación de teclas para fin de archivo).


GREP : Impresión de Expresión Regular Global / Analizador / Procesador / Programa.
Puedes usar esto para buscar en el directorio actual.
Puede especificar -R para "recursivo", lo que significa que el programa busca en todas las subcarpetas, sus subcarpetas y sus subcarpetas, etc.

grep -R "your word" .

-n imprimirá el número de línea, donde coincidió en el archivo.
-i buscará mayúsculas y minúsculas (mayúsculas / mayúsculas).

grep -inR "your regex pattern" .


grep -nr ''yourString*'' .

El punto al final busca el directorio actual. Significado para cada parámetro:

-n Show relative line number in the file ''yourString*'' String for search, followed by a wildcard character -r Recursively search subdirectories listed . Directory for search (current directory)

grep -nr ''MobileAppSer*'' . (Encontraría MobileAppServlet.java o MobileAppServlet.class o MobileAppServlet.txt ; ''MobileAppASer*.*'' Es otra forma de hacer lo mismo.)

Para verificar más parámetros usa el comando man grep .


grep -nr search_string search_dir

hará una búsqueda RECURSIVA (es decir, el directorio y todos sus subdirectorios) para la cadena de búsqueda. (como correctamente respondido por usta).

La razón por la que no recibió ninguna respuesta con la sugerencia de su amigo de:

grep -nr string

es porque no se especificó ningún directorio. Si está en el directorio en el que desea realizar la búsqueda, debe hacer lo siguiente:

grep -nr string .

Es importante incluir el ''.'' carácter, ya que esto le dice a grep que busque ESTE directorio.