Coincidencia de patrones de bash

Coincidencia de patrones de bash

La coincidencia de patrones de bash es un concepto indispensable que es útil al seleccionar diferentes nombres de archivo de un directorio y verificar si una cadena coincide con un formato dado. Ya sea que esté comenzando con la coincidencia de patrones de bash o buscando repasar sus habilidades, esta guía cubre las diversas formas y consejos para la coincidencia de patrones.

La coincidencia de patrones

Bash ofrece principalmente dos tipos de coincidencia de patrones: globos y globos extendidos. Los dos ofrecen formas simples para que los usuarios seleccionen los nombres de archivo y verifiquen las diferentes cadenas contra reglas específicas. Sin embargo, Bash también admite el uso regular, Especialmente cuando se trabaja con scripts para validar diversos datos de entrada y análisis del usuario.

1. Patrón de bash coincidencia con globos

La coincidencia de patrones del globo implica la verificación de nombres de archivo específicos en un directorio determinado. Se les conoce como comodines. Hay tres tipos de patrones de globos bash:

2. Asterisco (*)

Se usa cuando desea que coincidan con cero o más nombres de archivo.

Tengamos algunos ejemplos.

Verificar los nombres de archivo que comienzan o terminan con un personaje dado

Por ejemplo, si necesitábamos buscar un archivo que comience con l o li, Podríamos usar los siguientes comandos:

ls l*
ls li*

Tenga en cuenta cómo coincide con todos los nombres de archivo que comienzan con Li o L en el directorio actual, incluidos los directorios.

Para combinar solo con los directorios, agregue el / después del comodín, como se muestra en lo siguiente:

Del mismo modo, si necesitábamos hacer coincidir los nombres de archivo ese fin con un personaje dado o caracteres, podríamos usar el comodín como se muestra en la siguiente ilustración. En este ejemplo, coincidimos con los nombres de archivo que terminan con mi.

LS *E

Supongamos que no está seguro del nombre de archivo que desea buscar, pero conoce los caracteres dados. Como en el siguiente ejemplo, aún puede igualar los nombres de archivo agregando el comodín antes y después de los caracteres.

Coincidimos con los nombres de archivo que incluyen el nux Palabra clave en su nombre.

Verificación de archivos con una extensión dada

Con la coincidencia de patrones bash, puede localizar los archivos con una extensión dada. Por ejemplo, si desea encontrar todos los PDF o archivos de texto. En ese caso, agrega el comodín antes de la extensión del archivo. Veamos el siguiente ejemplo para que coincida con todos los archivos de texto:

LS *.TXT

Todos los archivos de texto coinciden como se muestra en lo siguiente:

3. Signo de interrogación (?)

El comodín del signo de interrogación coincide con los nombres de archivo que coinciden con un solo carácter. Sin embargo, debe saber el número de caracteres que tiene un nombre de archivo dado, de modo que cada uno "?"Representa a cada personaje.

Por ejemplo, para que coincida con un nombre de archivo con cuatro caracteres, pero sabemos el último personaje, podríamos tener el siguiente ejemplo:

LS ???mi

Del mismo modo, para encontrar una extensión dada en la que sepa el número de caracteres del nombre de archivo, podríamos usar el siguiente comando:

LS ?????.TXT

4. Corchetes []

Cuando desee una búsqueda más específica, como hacer coincidir los nombres de archivo que contienen los caracteres dados, los caracteres para que coincidan se pueden agregar en los soportes cuadrados.

Por ejemplo, para que coincidan con los nombres de archivo que contienen caracteres o números especificados independientemente de la extensión, podemos tener el siguiente comando:

LS [E-M]**.*

Aquí, coincidimos con los nombres de archivo que contienen cualquier carácter de E a M y tiene cualquier extensión.

Si quiso hacer coincidir los nombres de archivo que comienzan con caracteres específicos, supongamos que comenzando con [F-L] y teniendo una extensión dada, podríamos usar el siguiente patrón:

LS [F-L]*.TXT*

5. Coincidencia de patrones de bash con globos extendidos

Los globos extendidos tienen un gran parecido con las expresiones regulares. Sin embargo, están apagados por defecto. Cuando debe usarlos, debe encenderlos usando el siguiente comando:

$ shopt -s extglob

Los globos extendidos incluyen:

6. ?(patrones)

Se usa al coincidir con cero o uno ocurrencia del patrón especificado.

Por ejemplo, si desea que coincida con todos los nombres de archivo con una extensión dada o aquellos que contienen caracteres específicos en sus nombres, podríamos tener el siguiente comando:

$ LS ?(* nux* |*.mierda

7. *(patrones)

Se usa al coincidir con cero o más ocurrencias del patrón especificado.

Por ejemplo, podríamos usar el siguiente comando para que coincida con los nombres de archivo que comienzan con cero o más "F" y son archivos de texto:

$ ls *(f).TXT

8. +(patrones)

Se usa al coincidir con uno o mas ocurrencias del patrón especificado.

Si ejecutamos el comando anterior, tenga en cuenta que solo coincide con los nombres de archivo que deben contener al menos un "F", lo que significa que el .TXT El archivo no será una coincidencia.

$ ls +(f).TXT

9. @(patrones)

Se usa al coincidir con una ocurrencia del patrón especificado.

Si solo necesitamos hacer coincidir los nombres de archivo que contienen solo una "F" usando el mismo patrón que se usa en el ejemplo anterior, podríamos usar el @ como se muestra a continuación:

$ ls @(f).TXT

10. !(patrones)

Se usa cuando desea que coincida con todo lo demás que no coincida con el patrón especificado.

Tengamos un ejemplo en el que queremos que coincidan con todos los nombres de archivo que no tienen el patrón especificado. En este ejemplo, coincidimos con todos los nombres de archivo que no son archivos de texto o scripts bash. El comando es el siguiente:

$ LS !(*.txt |*.mierda

Conclusión

Esta guía presentó la coincidencia del patrón Bash y los diversos ejemplos para garantizar que comprenda cómo trabajar con las diversas opciones de coincidencia de patrones. Usando esta base, puede avanzar en la coincidencia de su patrón BASH y usar la misma lógica cuando desee hacer coincidir los diversos patrones en el terminal o al crear los scripts bash.