Skip to content

02 Wildcards

Alan edited this page Jun 13, 2026 · 1 revision

Wildcards (Globbing Patterns)

Tabla de Contenidos

Qué son los Wildcards

Los wildcards, o globbing patterns son un conjunto de caracteres que permiten describir patrones de texto (similar a RegEx), por ejemplo, nombres de archivos o texto dentro de un archivo.

Los wildcards son muy útiles en Linux, especialmente al trabajar con múltiples archivos a través de comandos. Los wildcards son tan útiles y poderosos que shells como Bash, Zsh y Fish lo incluyen como una función de shell integrada.

Patrones Wildcard

Un patrón wildcard es cualquier string que contiene uno o más caracteres especiales como ?, o * o expresiones como [...], o {...}. El globbing es la operación que expande un patrón wildcard en una lista de nombres de archivos que coinciden con el patrón.

Tip

Para usar un carácter especial como literal, puedes:

  • Escaparlo con \ (e.g., archivo-\[1-4\])
  • Entrecomillarlo con comillas simples ' (e.g., 'archivo-[1-4]') para evitar la expansión completa

Wildcards Estándar

Tip

Para más información acerca de wildcards estándar (globbing patterns), ejecuta el comando man 7 glob para visitar su man page.

Wildcard Descripción Ejemplo
* Coincide con cero o más caracteres cualesquiera ls *.txt: lista archivos con extensión .txt
? Coincide con exactamente un carácter cualquiera ls file?.txt: lista archivos como file1.txt, filea.txt, file!.txt
{...} Expande múltiples alternativas de nombres, secuencias, y wildcards. Cada alternativa es separada por una coma ls {*.docx,*.pdf}: lista archivos con extensión .docx o .pdf
touch archivo-{1..9}.md: crea archivo-1.md, archivo-2.md, ..., archivo-9.md
ls {test*,demo*}.txt: lista archivos .txt que inician con "test" o "demo"

Clases de Caracteres

Clase de caracteres Descripción Ejemplo
[...] Coincide con un carácter perteneciente al conjunto especificado ls [aeiou]*: lista archivos que inician con vocal
ls *[0-7]: lista archivos que terminan con dígito octal
[!...] Coincide con un carácter no perteneciente al conjunto especificado ls [!aeiou]*: lista archivos que no inician con vocal
:clase: Coincide con un carácter perteneciente a una clase POSIX predefinida ls *[[:digit:]]: lista archivos que terminan en números

Clases POSIX Predefinidas

Clase de caracteres Descripción Wildcard equivalente Ejemplo
[:upper:] Letras mayúsculas [A-Z] ls [[:upper:]]*: lista archivos que comienzan con mayúsculas
[:lower:] Letras minúsculas [a-z] ls [[:lower:]]*: lista archivos que comienzan con minúsculas
[:alpha:] Caracteres alfabéticos [A-Za-z] ls [[:alpha:]]*: lista archivos que comienzan con letras
[:digit:] Dígitos decimales [0-9] ls [[:digit:]]*: lista archivos que comienzan con un dígito
[:alnum:] Caracteres alfanuméricos [A-Za-z0-9] ls *[[:alnum:]]: lista archivos terminados en letra o dígito
[:space:] Caracteres de espaciado (espacios, tabs, saltos de línea, etc.) [ \t\n\r\f\v] ls *[[:space:]]*: lista archivos con espacios en el nombre
[:blank:] Espacios y tabs únicamente [ \t] ls [[:blank:]]*: lista archivos que comienzan con espacio o tab
[:graph:] Caracteres gráficamente imprimibles, excluyendo espacios [![:space:]] ls [[:graph:]]*: lista archivos que comienzan con carácter visible
[:print:] Caracteres gráficamente imprimibles, incluyendo espacios [[:graph:][:space:]] ls [[:print:]]*: lista archivos que comienzan con carácter imprimible
[:punct:] Caracteres de puntuación (gráficos no alfanuméricos) [![:alnum:][:space:]] ls [[:punct:]]*: lista archivos que comienzan con puntuación
[:cntrl:] Caracteres de control [\x00-\x1F\x7F] ls *[[:cntrl:]]*: lista archivos con caracteres de control
[:xdigit:] Dígitos hexadecimales [0-9A-Fa-f] ls [[:xdigit:]]*: lista archivos que comienzan con dígito hexadecimal

Important

Los wildcards equivalentes mostrados son aproximaciones. Las clases POSIX pueden incluir caracteres específicos del locale que los rangos básicos podrían no cubrir completamente.

Ejemplos Avanzados

# Combinar múltiples patrones
# Ejemplo: lista archivos que inician con letra y terminan con número
ls [[:alpha:]]*[[:digit:]]

# Usar negación con rangos
# Ejemplo: lista archivos que no inician con minúscula
ls [!a-z]*

# Expansión de llaves con rangos
# Ejemplo: crea test-a-1.txt, test-a-2.txt, etc.
touch test-{a..c}-{1..3}.txt

# Clases dentro de rangos
# Ejemplo: lista archivos que inician con dígito o letras a-f
ls [[:digit:]a-f]*

Referencias

Introducción a los Sistemas Operativos

Introducción a Linux

Licencias de Software

Archivos y Directorios

Introducción a la CLI

Manipulación de Archivos y Directorios

Documentación y Exploración de Comandos

Redirección

Búsqueda de Archivos y Texto

Editores de Texto de Terminal

Gestión de Usuarios y Grupos

Propiedad y Permisos

Herramientas Esenciales

Hardware

Apéndice

Clone this wiki locally