4 votos

linux + encontrar la palabra/string en el archivo en el directorio

Tengo el siguiente comando

find /var -type f -exec grep "param1" {} \; -print

Con este comando puedo encontrar el param1 cadena en cualquier archivo en /var pero el tiempo que toma para que esto es muy largo.

Necesito otra posibilidad a la cadena de búsqueda en el archivo, pero mucho más rápido que mi ejemplo

5voto

Chrisii Puntos 586

Usted podría tratar de usar grep directamente como en

grep -R "param1" /var/*

1voto

Mike Cole Puntos 173

búsqueda rápida es principalmente que se consigue al tener un "índice" de los contenidos, una especie de "tabla de búsqueda". hay algunos motores de búsqueda gratuitos que construir un índice de los archivos de entrada y darle muy, muy rápido los resultados:

dudo que usted quiere ir por ese camino, pero sólo para darles otra opción :)

1voto

Keith Sirmons Puntos 2558

Hay un par de factores en el trabajo aquí:

Primero, mediante el uso de -exec, encontrar está originando un nuevo proceso para la grep por cada archivo que se encuentra.

Esto se puede administrar ya sea mediante el uso de xargs como en Felipe Alvarez respuesta (escribí un post en el blog acerca de este 5+ años) o mediante el uso de -exec grep param1 {} + (nota de la + en lugar de \;). Cuando se utiliza +, "la línea de comandos se construye añadiendo cada nombre del archivo seleccionado en la final; el número total de invocación del comando será mucho menor que el número de archivos encontrados" (de encontrar al hombre de la página)

Segundo, el número y el tamaño de los archivos en /var es potencialmente muy grande.

Puede agregar parámetros además de la -type f a limitar los archivos que usted está buscando. find tiene opciones de límite de tiempo, el dueño, patrón de nombre, etc. Por ejemplo, usted podría hacer:

find /var -type f -name "access*log" -mtime -7 -exec grep param1 {} +

Para encontrar los archivos modificados en los últimos siete días con nombres que comienzan con "acceso" y termina con "registro". Sólo los archivos coincidentes serán parte de la exec/grep.

0voto

akauppi Puntos 3125

encontrar ...[bla]..... -print0 | xargs -0 grep -e "regex"

0voto

JimM NH Puntos 1

Recomendamos el uso de:

grep -RInis "param1" /var

Para más detalles, ver

man grep

Si la velocidad es de tal importancia, que usted puede ser que desee considerar fgrep, lo que podría resultar no ser más rápido dependiendo de la aplicación.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: