Uso de comodines y expansión de patrones

ShellBeginner
Practicar Ahora

Introducción

Imagine que tiene una habitación desordenada con cientos de papeles esparcidos.

  • Algunos son tareas de clase (math_hw.txt, english_hw.txt).
  • Otros son fotos (pic1.png, pic2.png).
  • Otros son basura (temp_1, temp_2).

Si quiere mover todas las fotos a una caja, no las recoge una por una. Puede decir: «Recoja todo lo que parezca una foto».

En Linux, hacemos esto con comodines (también llamados patrones de expansión). Funcionan como las cartas comodín de una baraja: pueden representar otros caracteres.

Esta idea es muy útil porque permite trabajar con patrones en lugar de hacerlo con nombres individuales. En los sistemas reales puede haber decenas, cientos o miles de archivos que coincidan. La selección basada en patrones es una de las razones por las que el trabajo con el shell se puede ampliar tan bien.

En este laboratorio aprenderá a usar dos símbolos importantes:

  1. El asterisco (*): representa cualquier cosa (cualquier cantidad de caracteres).
  2. El signo de interrogación (?): representa un único carácter.

Seleccionar varios archivos (*)

El asterisco * es el comodín más conocido. Significa «coincidir con cualquier cantidad de caracteres, incluso cero».

Veamos qué hay en nuestro directorio desordenado:

ls

Este comando lista los archivos. Ahora imagine que solo quiere mostrar los archivos de texto, es decir, los archivos cuyo nombre termina en .txt.

En lugar de escribir ls notes.txt readme.txt report.txt, solo tiene que escribir *.txt.

Esto significa: «Busque cualquier archivo cuyo nombre termine en .txt».

ls *.txt

Salida:

notes.txt  readme.txt  report.txt

El shell examinó *.txt, lo expandió para que coincidiera con todos los archivos de texto e ignoró image.png y los demás. ¡Acaba de filtrar la lista!

Esta explicación contiene un concepto importante: el shell realiza la expansión del patrón antes de que se ejecute el comando ls. En otras palabras, normalmente ls recibe una lista de nombres de archivo ya preparada, no el patrón *.txt sin modificar. Esto explica por qué los comodines funcionan con muchos comandos diferentes.

Mover archivos con *

Ahora hagamos algo útil. Tenemos varios archivos de datos: data_2025.csv, data_2024.csv, data_old.log.

Queremos organizar el directorio. Moveremos todos los archivos cuyo nombre empiece por data_ a un directorio de respaldo.

Primero, cree el directorio:

mkdir backup

Ahora use el comodín para moverlos todos a la vez. El patrón data_* coincide con cualquier nombre que empiece por data_.

mv data_* backup/

Acabamos de indicarle a Linux: «Si el nombre empieza por data_, muévalo a la caja de respaldo».

Aquí es donde los comodines resultan especialmente útiles. En lugar de repetir un comando para cada archivo coincidente, expresa una regla de nombres una sola vez y deja que el shell la expanda.

Compruebe que ya no están en el directorio actual:

ls

Después, compruebe que llegaron correctamente:

ls backup

¡Correcto! Ha movido tres archivos con un solo comando.

Seleccionar un único carácter (?)

El asterisco * es muy amplio: lo incluye todo. A veces necesita ser más preciso.

El comodín signo de interrogación ? representa exactamente un carácter.

Por eso, ? es más preciso que *. Resulta útil cuando los nombres de archivo siguen un formato predecible y quiere evitar coincidencias accidentales con nombres más largos de lo previsto.

Tenemos archivos llamados temp_1, temp_2 y temp_a.

  • temp_* coincidiría con temp_1 y con temp_very_long_name.
  • temp_? solo coincide cuando hay exactamente un carácter después del guion bajo.

Probemos el patrón antes de eliminar los archivos (¡siempre es una buena práctica!):

ls temp_?

Coincidencias: temp_1, temp_2, temp_a.

Ahora que lo hemos comprobado, eliminémoslos:

rm temp_?

Verifique que ya no están:

ls

Esto resulta muy útil para encontrar archivos con estructuras de nombres específicas.

Conviene recordar la práctica de seguridad de este paso: previsualice un patrón con un comando que no modifique nada, como ls, antes de usarlo con rm o mv. La coincidencia de patrones es muy potente, por lo que es recomendable revisar primero y actuar después.

Resumen

Ha aprendido a aprovechar el poder de la coincidencia de patrones.

  • * (asterisco): el comodín que significa «coincidir con todo». Es ideal para seleccionar todos los archivos de un tipo (*.png) o todos los archivos de una serie (day_*).
  • ? (signo de interrogación): el comodín que representa «un único carácter». Es ideal para realizar coincidencias precisas (file_?.txt).

Aquí concluye el módulo 2. Ahora sabe cómo:

  1. Recorrer el árbol de archivos (pwd, cd, ls).
  2. Crear archivos y directorios (touch, mkdir).
  3. Copiarlos y moverlos (cp, mv).
  4. Eliminarlos (rm, rmdir).
  5. Seleccionarlos por lotes (*, ?).

Está preparado para el módulo 3, donde abrirá estos archivos y leerá y editará el texto que contienen.