Tutorial de Bash Globbing

Bash Globbing Tutorial



Bash no admite expresiones regulares nativas como otros lenguajes de programación estándar. La función de shell Bash que se utiliza para hacer coincidir o expandir tipos específicos de patrones se denomina globbing. Globbing se utiliza principalmente para hacer coincidir nombres de archivos o buscar contenido en un archivo. Globbing utiliza caracteres comodín para crear el patrón. Los caracteres comodín más comunes que se utilizan para crear patrones de globbing se describen a continuación.

‘?’ se utiliza para coincidir con cualquier carácter. Puedes usar ‘?’ varias veces para hacer coincidir varios caracteres.







Ejemplo 1:



Suponga que desea buscar los nombres de archivo de texto cuyos nombres tienen 4 caracteres y la extensión es .TXT . Puede aplicar un patrón globular utilizando ' ? 'Cuatro veces para hacer esta tarea.



Descubra la lista de todos los archivos y carpetas del directorio actual.





$ls-los

Ejecute el siguiente comando para buscar aquellos archivos cuyos nombres tengan cuatro caracteres y sean desconocidos.

$ ls -l ????. txt



Ejemplo 2:

Suponga que desea buscar los archivos de documentos cuyos nombres tienen 8 caracteres, los primeros 4 caracteres son f, o, o y t y la extensión es Doc . Ejecute el siguiente comando con patrón globbing para buscar los archivos.

$ls -lospie ????. doc

Ejemplo 3:

Suponga que sabe que el nombre del archivo es 'mejor' y la extensión tiene 3 caracteres, pero no la conozco. Ejecute el siguiente comando usando ‘? 'Para buscar todos los archivos con el nombre' prueba 'que tengan una extensión de tres caracteres.

$ls -losmejor.???

Asterisco - (*)

‘*’ se utiliza para coincidir con cero o más caracteres. Si tiene menos información para buscar cualquier archivo o información, puede usar ‘*’ en patrón globular.

Ejemplo 1:

Suponga que desea buscar todos los archivos de 'Pl' extensión. Ejecute el siguiente comando usando ‘*’ para hacer esa tarea.

$ls -los *.pl

Ejemplo 2:

Suponga que conoce el carácter inicial del nombre de archivo solo que es ‘a’ . Ejecute el siguiente comando usando '*' para buscar todos los archivos del directorio actual cuyos nombres comienzan con ‘a’ .

$ls -losa*.*

Ejemplo 3:

Puede aplicar '*' en el script bash para varios propósitos sin buscar archivos. Crea un archivo bash llamado 'Check.sh' con el siguiente script. Aquí, cuando el usuario escriba ' y 'o' Y 'o' sí 'o' Sí ' luego 'confirmado' se imprimirá y cuándo se escribirá el tipo 'N' o 'N' o 'no' o 'No' luego 'No confirmado' imprimirá.

#! / bin / bash
echo '¿Quieres confirmar?'
leerrespuesta
caso $ respuesta en
[Yy]* ) echo 'confirmado.';;
[Nos]* ) echo 'No confirmado.';;
*) echo 'Intentar otra vez.';;
esac

Ejecute el script.

$intentocheck.sh

Corchete - ([])

‘[]’ se utiliza para hacer coincidir el carácter del rango. Algunas de las declaraciones de rango más utilizadas se mencionan a continuación.

Todos los alfabetos en mayúsculas están definidos por el rango como, [: superior:] o [A-Z].

Todos los alfabetos en minúsculas están definidos por el rango como, [: inferior:] o [a-z].

Todos los dígitos numéricos están definidos por el rango como, [: dígito:] o [0-9].

Todos los alfabetos en mayúsculas y minúsculas están definidos por el rango como, [: alpha:] o [a-zA-z].

Todos los alfabetos en mayúsculas, minúsculas y dígitos se definen por el rango como, [: alnum:] o [a-zA-Z0-9]

Ejemplo 1:

Ejecute el siguiente comando para buscar todos los archivos y carpetas cuyo nombre contiene pag o q o r o s .

$ls -los [PD]*

Ejemplo 2:

Ejecute el siguiente comando para buscar todos los archivos y carpetas cuyo nombre comience con cualquier dígito del 1 al 5.

$ls -los [1-5]*

Le falta - (^)

Puedes usar ‘^’ con corchete para definir el patrón globular más específicamente. ‘^’ se puede utilizar dentro o fuera del corchete. '^' Se usa fuera del corchete para buscar el contenido del archivo que comienza con un rango de caracteres determinado. '^' Se usa dentro del corchete para mostrar todo el contenido del archivo resaltando las líneas que comienzan con un rango de caracteres determinado. Puede utilizar diferentes tipos de patrones globales para buscar contenido particular de un archivo. 'sujeción' El comando se usa para buscar contenido en bash. Supongamos que tiene un archivo de texto llamado 'List.txt' con el siguiente contenido. Pruebe los siguientes ejemplos para ese archivo.

manzana
4000
Banana
700
naranja
850
Pera
9000
jackdruit

Ejemplo 1:

Ejecute el siguiente comando para buscar esas líneas desde list.txt archivo que comienza con P o Q o R .

$ grep '^ [P-R]' list.txt

Ejemplo - 2:

Ejecute el siguiente comando para resaltar esas líneas de list.txt archivo que comienza con A o B o C .

$ grep '[^ A-C]' list.txt

Signo de exclamación - (!)

Puedes usar ‘!’ dentro del patrón de rango. Funciona igual que el uso del símbolo '^' fuera del patrón de rango. Algunos ejemplos de uso ‘!’ los signos se dan a continuación.

Ejemplo 1:

Ejecute el siguiente comando para mostrar esas líneas desde list.txt archivo que comienza con 'P' o Q o R .

$ grep [! P-R] list.txt

Ejemplo - 2:

Ejecute el siguiente comando para mostrar esas líneas desde list.txt archivo que comienza con cualquier dígito de 4 a 8 .

$ grep [! 4-8] list.txt

Signo de dólar - ($)

‘$’ se utiliza para definir el carácter final. Si sabe que desea buscar información basada en el último carácter, puede usar ‘$’ en patrón globular.

Ejemplo 1:

Ejecute el siguiente comando para buscar esas líneas desde list.txt archivo que termina con ‘a’ .

$ grep a $ list.txt

Ejemplo - 2:

Ejecute el siguiente comando para buscar esas líneas desde list.txt archivo que termina con el número 50 .

$ grep 50 $ list.txt

Llave - ({})

‘{}’ se puede utilizar para hacer coincidir los nombres de archivo con más de un patrón globbing. Cada patrón está separado por ',' entre corchetes sin ningún espacio. A continuación se ofrecen algunos ejemplos.

Ejemplo 1:

Ejecute el siguiente comando para buscar aquellos archivos cuyos nombres tienen 5 caracteres y la extensión es 'Sh' o los dos últimos caracteres de los archivos son 'S t' y la extensión es 'TXT' .

$ ls -l {?????. sh, * st.txt}

Ejemplo - 2:

Ejecute el siguiente comando para eliminar todos los archivos cuyas extensiones son 'Doc' o 'docx' .

$rm {*.Doc,*.docx}

Tubería– (|)

El signo '|' también se utiliza para aplicar más de una condición en el patrón globular. Cada patrón está separado por el símbolo '|' en el comando.

Ejemplo 1:

Ejecute el siguiente comando para buscar los nombres de archivo que comienzan con el carácter 'a' y tienen la extensión 'bash' o 'sh'.

$lsa*+(.intento|.sh)

Ejemplo - 2:

Crea un archivo bash llamado 'Menu.bash' y agregue el siguiente script. Si el tipo de usuario 1 o S entonces se imprimirá Buscando texto . Si el tipo de usuario 2 o R entonces se imprimirá Reemplazo de texto . Si el tipo de usuario 3 o D entonces se imprimirá Eliminando texto . Se imprimirá Intentar otra vez para cualquier otra entrada.

#! / bin / bash
echo 'Seleccione cualquier opción del menú:'
leerrespuesta
caso $ respuesta en
1 |S) echo 'Buscando texto';;
2 |R) echo 'Reemplazo de texto';;
3 |D) echo 'Eliminando texto';;
*) echo 'Intentar otra vez.';;
esac

Ejecute el script.

$intentomenu.bash

CONCLUSIÓN

En este tutorial se explican algunos de los patrones de globbing más utilizados mediante ejemplos muy sencillos. Espero que después de practicar los ejemplos anteriores, el concepto de globbing sea claro para usted y pueda aplicarlo en comandos y scripts de bash con éxito.

Para obtener más información, consulte este video: