GREP y encontrar reglas de operadores para Linux

GREP y encontrar reglas de operadores para Linux

Inicialmente, los sistemas operativos Unix/Linux no tenían una interfaz gráfica, ya que se centraron en el uso del servidor. Hoy a este respecto, no son inferiores a Windows, por lo que los usuarios que usan este sistema operativo rara vez conocen la sintaxis y el propósito de los comandos principales de Linux. Mientras tanto, esta es una herramienta muy poderosa que le permite realizar operaciones rápidamente que, utilizando las herramientas básicas del sistema operativo, es problemático o imposible. Hoy se reunirá con operadores Find y GREP, que son básicos para el sistema de archivos de todas las distribuciones de Linux.

El nombramiento de los operadores de búsqueda y GREP

El equipo Find en Linux es el operador de línea de comandos para trabajar con archivos sin pasar por la jerarquía existente. Le permite buscar archivos utilizando muchos filtros, así como realizar ciertas acciones a través de archivos después de su búsqueda exitosa. Entre los criterios para buscar archivos se encuentran casi todos los atributos disponibles, desde la fecha de creación hasta la resolución.

El equipo GREP en Linux también se refiere a los motores de búsqueda, pero dentro de los archivos. La traducción literal del equipo es la "impresión global de expresiones regulares", pero el sello aquí significa la conclusión de los resultados del trabajo en el dispositivo por defecto, que generalmente es el monitor. Al tener un gran potencial, el operador se usa con bastante frecuencia y le permite buscar dentro de uno o más archivos de acuerdo con los fragmentos especificados (plantillas). Dado que la terminología en Linux es significativamente diferente de tal en Windows, muchos usuarios tienen dificultades significativas utilizando estos comandos. Intentaremos eliminar este inconveniente.

Grep y encontrar sintaxis

Comencemos con el operador Find. La sintaxis del equipo de búsqueda de archivos se ve así:

Encuentre [dónde buscar] [Parámetros] [-optic] [Acción]

Algunos usan parámetros:

  • -Profundidad: busque en la carpeta actual y los subcatalistas;
  • -Versión: traiga la versión del equipo;
  • -Imprimir: Mostrar nombres de archivo completos (en Linux, pueden ser arbitrariamente grandes);
  • -Tipo F: Buscar exclusivamente archivos;
  • -Tipo D - Directorio solo de búsqueda (carpetas).

Lista de opciones disponibles (indicadas a través de un guión):

  • Nombre: búsqueda de archivo por nombre;
  • Usuario: Buscar por el nombre del propietario del archivo;
  • permanente: de acuerdo con el atributo "modo de acceso";
  • MTIME: En el momento del último cambio (editar) del archivo;
  • Grupo: por grupo;
  • ATIME: En la fecha de la última apertura del archivo;
  • Más nuevo: buscar un archivo con una fecha más que una directiva especificada en la plantilla;
  • Tamaño: por el tamaño del archivo en bytes;
  • Nouser: Busque archivos que no tengan un atributo ingresado "propietario".

Sintaxis GREP:

Plantilla Grep [Opciones] [dónde buscar]

Las opciones deben entenderse como parámetros aclaratorios adicionales, por ejemplo, el uso del régimen inverso o la búsqueda de un número dado de líneas.

La plantilla indica lo que debe buscarse utilizando una línea directamente especificada o una expresión regular.

La posibilidad de usar expresiones regulares puede expandir significativamente las capacidades de búsqueda. Una indicación de la conclusión estándar puede ser útil si la tarea es filtrar los errores registrados en los registros o buscar el proceso PID en los resultados del comando PS, que puede ser múltiple página.

Considere los parámetros GRAS más comunes:

  • -B: Muestre el número de bloque antes de emitir la línea resultante;
  • -C: Es necesario calcular el número de entradas del fragmento deseado;
  • -I: Buscar sin registrar el registro;
  • -N: emita un número de línea para el dispositivo de salida estándar en el que se encontró un fragmento o plantilla deseada;
  • - L: Como resultado de la emisión, solo deben estar presentes los nombres de los archivos con un fragmento de búsqueda encontrado;
  • -S: ignorar la salida de error;
  • -W: Buscar un fragmento rodeado en ambos lados por espacios;
  • -V: búsqueda invertida, es decir, la visualización de todas las líneas que no contienen un fragmento dado;
  • -E: El parámetro indica que sigue una expresión regular que tiene su propia sintaxis;
  • -AN: La conclusión del fragmento deseado y las líneas n anteriores;
  • -BN: Lo mismo, pero con las líneas que van después de la plantilla.

Ahora tiene sentido moverse de la parte teórica a lo práctico.3

Ejemplos de uso de servicios públicos

Si sabe qué son la combinatoria, entonces se debe representar el verdadero número de combinaciones posibles de los equipos de búsqueda. Nos limitaremos solo a los ejemplos más útiles que pueden ser útiles durante el trabajo.

Buscar texto en archivos

Tengamos los derechos del administrador y tenemos la tarea de encontrar un usuario específico en un archivo de contraseña enorme. Necesitaremos un equipo bastante simple que indique la ruta de publicación de archivos:

Grep NameUser /etc /passwd

Si el resultado de la búsqueda es positivo, obtendremos una línea resultante de aproximadamente el siguiente tipo:

NameUser: X: 1021: 1021: nameUser ,,,,/home/user:/bin/bash

Si necesita buscar un fragmento de texto sin tener en cuenta el registro de registro, el equipo se verá así:

Gras -I "nameUser" /etc /passwd

En este caso, el usuario de NameUser y su "homónimo" se encontrarán todas las combinaciones posibles.

La conclusión de varias líneas

Obtengamos todos los errores del registro de la ventana Shell Xorg.registro. La tarea se complica por el hecho de que después de erróneo una cadena que contiene información valiosa puede seguir. Se decide si obligamos al comando a mostrar varias líneas usando la línea "PP" como plantilla:

Gras -A5 "PP"/var/log/xorg.0.registro

Obtenemos una línea que contiene una plantilla y 5 líneas después de ella.

Gras -C3 "PP"/var/log/xorg.0.registro

Salida de línea con un fragmento del texto y tres líneas antes y después.

Uso de expresiones regulares en GREP

Esta es una de las herramientas de Linux más potentes que amplía significativamente la posibilidad de formar una plantilla de búsqueda. Las expresiones regulares tienen su propia sintaxis, bastante complicada. No profundizaremos en él, limitándonos al ejemplo del uso de RV. Como ya sabe, para indicar que la expresión regular se usa aún más, el parámetro -e se usa.

Permítanos en el archivo de mensajes.2 Necesitamos atrapar todas las líneas para septiembre:

Grep "^Sep 09"

El resultado será algo como esto:

SEP 09 01:11:45 GS124 NTPD [2243]: RESET DE TIEMPO +0.197579 S

SEP 09 01:19:10 GS124 NTPD [2243]: RESET DE TIEMPO +0.203484 S

Para buscar una plantilla ubicada al final de la línea de barra, se usa el símbolo "$":

Grep "Término.Mensajes de $ "

Resultado:

17 de junio 19:01:19 Cloneme Kernel: Log Daemon Term.

11 de septiembre 06:30:54 Cloneme Kernel: Log Daemon Term.

Y aquí hay un ejemplo de uso de una expresión regular que le permite buscar líneas que contengan cualquier número, excepto cero:

Grep "[1-9]"/var/log/xorg.1.registro

Usando una búsqueda recursiva en Grep

Si está familiarizado con el término "recursión", en Linux esta técnica se utiliza, en particular, para buscar un fragmento en varios archivos ubicados en el catálogo y sus subcatales. La opción -r indicará la presencia de recursión. Busquemos un fragmento "namedomain.Org "en archivos ubicados en los subcatales de la carpeta /etc /apache1:

Gras -r "namedomain.Org "/etc/apache1/

El resultado puede ser algo como esto:

/etc/apache1/vhosts.D/ namedomain.Organizar

Si no es necesario el nombre del archivo, usamos -h: h:

Grep -h -r "namedomain.Org "/etc/apache1/

Buscar palabras

Estándar La búsqueda del fragmento QWE terminará con la emisión de todas las palabras en las que se encuentra este fragmento: KBQWE, QWE123, AAFRQWE32. Para limitar la búsqueda solo con un fragmento dado, debe usar el parámetro -W:

Gras -W "QWE" dónde encontrar

Buscar dos o más palabras

Complicar la tarea: necesitamos encontrar todas las líneas donde se encuentran dos palabras. El equipo será así:

Gras -W "Word01 | Word02" Where_ para encontrar

El número de líneas

Si es necesario para calcular. Cuántas veces se encuentra el fragmento deseado en el archivo, usamos el diseño con el parámetro -c:

Gras -C "'Text" Where_ para encontrar

El parámetro -n ayuda a averiguar en qué línea se encuentra la plantilla deseada:

Gras -n "Nuser" /etc /passwd

Búsqueda invertida usando Grep

A veces, la tarea de buscar el uso de GREP por el contenido de los archivos no es encontrar la entrada en sí, sino las líneas donde este fragmento está ausente. La opción -v nos ayudará:

Gras -v "txt" donde_ encontrar

La salida del nombre del archivo

Deje que necesite encontrar todos los archivos en el directorio especificado que contiene la plantilla deseada. Esto se puede hacer usando el parámetro -l. Por lo tanto, el comando completo para la salida de archivos que contienen la cadena "secundaria" en la carpeta /etc. se verá de la siguiente manera:

GREP -L "SECUNDARIO" /ETC

Salida de color usando GREP

Permanecer con otro color es una excelente manera de visualizar la entrada deseada que reduce significativamente la carga en los ojos si la operación a menudo se realiza. Resulta que Gras tiene una opción para esta salida de los resultados de búsqueda:

GrePor -Color "Secundario" /etc

Procedemos a la consideración de ejemplos de uso de la utilidad Find en Linux.

Buscar todos los archivos

Para retirar una lista de archivos ubicados en el catálogo actual, usamos el comando en el siguiente formato:

Encontrar .

Si necesita mostrar el nombre completo de los archivos, usamos el comando

Encontrar . -Imprimir

Salida del archivo en un catálogo determinado

Para buscar archivos en una carpeta definida por el usuario, usamos el comando

Encontrar ./etc

Pero, ¿cómo puede encontrar archivos que contienen un fragmento dado en el catálogo actual:

Encontrar . -NOMBRE "*.Gif "

Si la búsqueda debe llevarse a cabo sin contabilizar el registro, el comando debe modificarse:

No tenga en cuenta el registro al buscar por nombre:

Encontrar . -En mi "*.Gif "

Limitando la profundidad de la búsqueda

Otra tarea bastante típica es buscar archivos en una carpeta particular de acuerdo con un nombre de pila:

Encontrar . -maxdepth01 1 -name "*.Html "

Invertir la plantilla

Ya hemos considerado un análogo del equipo para buscar líneas que no contengan un fragmento dado. De la misma manera, puede hacer con archivos que no corresponden a una plantilla dada:

Encontrar . -no -name "usuario*"

Buscar por varios criterios

Damos un ejemplo de la línea de comando utilizando la utilidad Buscar para la búsqueda por dos criterios utilizando el operador no (exclusión):

Encontrar . -Nombre "Usuario" -not -name "*.Html "

En este caso, no se encontrarán archivos cuyo nombre incluye un fragmento de usuario, pero que tenga una extensión. En lugar de un operador de excepción, puede usar la lógica "/" o "::

Encontrar -name "*.js "-o -name"*.Sql "

En este caso, obtendremos una lista completa de archivos con ambas extensiones ubicadas en el directorio actual.

Buscar en varios catálogos

Si necesitamos encontrar archivos en dos catálogos, simplemente indique desde la brecha:

Encuentra -tipo f ./Test01 ./test02 -name "*.Sql "

Buscar archivos ocultos

En Linux, como en Windows, hay archivos ocultos que, al usar el comando finales, no se mostrarán sin un símbolo especial. Este símbolo es Tilda, y la directiva tendrá el siguiente aspecto:

encontrar ~ -name ".*

Buscar archivos en Linux por permisos

A veces es necesario filtrar el catálogo para una determinada máscara de derechos. Por ejemplo, si necesitamos encontrar archivos con un atributo 0661, usamos el comando:

Encontrar . -Perm 0661

La tarea de filtrar archivos con el atributo "Solo para leer" se resuelve de la siguiente manera:

Encontrar /etc /user -perm /u = r

Pero, ¿cómo se verá la búsqueda de archivos ejecutables en el catálogo de ETC:

Encontrar /etc -perm /a = x

Buscar archivos de grupos/usuarios

El administrador a menudo tiene que enfrentar la tarea de buscar archivos que sean propiedad de un usuario y/o grupo en particular. Búsqueda por usuario:

Encontrar . -Usuario Slavko

Para grupos de usuarios, se utiliza otro parámetro:

Encontrar /var -grups desarrolladores

Buscar por fecha de la última modificación

El formato visible de la fecha del archivo en el sistema operativo Linux es precisamente la fecha de su modificación (el mismo principio se usa en Windows). Para formar una lista por fecha, se usa la opción mtime. Digamos que necesitamos encontrar archivos cambiados hace dos meses:

Encontrar /home -mtime 60

Entre los atributos del archivo hay una fecha de su último descubrimiento (sin hacer cambios). Dichos archivos se muestran mediante el siguiente comando:

Encontrar /home -atime 60

También puede establecer el intervalo de tiempo. Para buscar archivos modificados de hace cuatro o dos meses, usamos la directiva:

Find /home -mtime +60 -mtime -120

Pero cómo encontrar archivos recién cambiados (hace dos horas):

Encontrar /home -cmin 120

Buscar archivos por tamaño

Sospecha que alguien usa un disco para películas? Estamos buscando archivos tamaño 1.4 GB:

Encontrar / -miz 1400m

O usar el rango:

Encontrar / -size +1400m -size -2800m

Buscar archivos/catálogos vacíos

Sí, no te sorprendas. La tarea de restaurar el orden en los medios es característica no solo para Android OS. En Linux, se decide con la ayuda de tal directiva:

Encontrar /var -type f -empty

Un ejemplo de acciones con archivos encontrados

En Linux, el equipo Find puede realizar de forma recursiva ciertas acciones con esos archivos, la búsqueda en la que realiza. Para ejecutar los comandos de archivo, debe usar el parámetro EXEC. Entonces, la directiva para mostrar información sobre todos los archivos utilizando el comando LS se verá así:

Encontrar . -EXEC LS -L \;

Pero, ¿cómo simplemente puede eliminar archivos temporales con una máscara dada en el directorio /inicio /temperatura?

Encontrar /tmp -type f -name "*.html ”-exec rm -f \;

Por supuesto, para un principiante, usar una línea de comando con una gran cantidad de opciones parecerá ser una forma algo elaborada, pero en Linux está en el orden de las cosas. ¿Y cómo resolverías los problemas descritos aquí en Windows?? Es lo mismo. En este aspecto, Linux está claramente por delante.