Wildcards (extended globbing)

Los wildcards (comodines) en Bash suelen ser referenciados como expansión de nombres/directorios y a veces como globbing.

La expansión de nombres de ficheros o directorios expande las sintaxis *? o [...] cuando se usan como parte de un comando, por ejemplo:

$ ls *.jpg         # Lista todos los ficheros JPEG
$ ls ?.jpg         # Lista ficheros JPEG cuyo nombre sea un carácter (ej: a.jpg, 1.jpg)
$ rm [A-Z]*.jpg    # Borra ficheros JPEG cuyo nombre empiece por una letra en mayusculas
*      Coincide con cero o más caracteres
?	   Coincide cualquier único caracter
[...]  Coincide cualquier de los caracteres en el conjunto

Esta expansión está realizada por Bash, no por el sistema operativo o el comando que se ejecute.

Extended globbing

Además de los wildcards anteriores se pueden activar los extendidos mediante:

shopt -s extglob

Si queremos ver el estado:

$ shopt | egrep extglob
extglob        	on

Esto nos habilita los siguientes wildcards extendidos:

  ?(pattern-list)   Coincide con cero o una ocurrencia de los patrones dados
  *(pattern-list)   Coincide con cero o más ocurrencias de los patrones dados
  +(pattern-list)   Coincide con una o más ocurrencias de los patrones dados
  @(pattern-list)   Coincide con una ocurrencia de los patrones dados
  !(pattern-list)   Coincide con cualquiera que no sea una de las ocurrencias de los patrones dado

Ejemplos:

$ ls *.pdf
ee.pdf  e.pdf  .pdf

$ ls ?(e).pdf    # cero o una "e" permitida
e.pdf  .pdf

$ ls *(e).pdf    # cero o más "e"s permitidas
ee.pdf  e.pdf  .pdf

$ ls +(e).pdf    # una o más "e"s permitida
ee.pdf  e.pdf

$ ls @(e).pdf    # solo una "e" permitida
e.pdf

$ ls ?(*.jpg|*.gif)  # jpg y/o gif
a.jpg  b.gif

$ ls !(*.jpg|*.gif)  # ni jpg ni gif
c.png d.pdf ee.pdf

Estos wildcard extendidos se pueden usar en un if después de un ==, en un patrón de un case y en una expansión de parámetros %, %%, #, ##, /, //.

Retro

Lugares

Redes

Sistemas

Varios