10 ejemplos prácticos que utilizan comodines para hacer coincidir nombres de archivos en Linux


Los comodines (también denominados metacaracteres) son símbolos o caracteres especiales que representan otros caracteres. Puede usarlos con cualquier comando, como el comando ls o el comando rm, para listar o eliminar archivos que coincidan con un criterio dado, de forma receptiva.

Lea también: 10 ejemplos prácticos útiles sobre el encadenamiento de operadores en Linux

El shell interpreta estos comodines y los resultados se devuelven al comando que ejecuta. Hay tres comodines principales en Linux:

  • Un asterisco (*) : coincide con una o más ocurrencias de cualquier carácter, incluido ningún carácter.
  • Signo de interrogación (?) : representa o coincide con una sola aparición de cualquier carácter.
  • Caracteres entre corchetes ([]) : coincide con cualquier aparición de caracteres encerrados entre corchetes. Es posible utilizar diferentes tipos de caracteres (caracteres alfanuméricos): números, letras, otros caracteres especiales, etc.

Debe elegir cuidadosamente qué comodín usar para hacer coincidir los nombres de archivo correctos: también es posible combinarlos todos en una operación, como se explica en los ejemplos a continuación.

Cómo hacer coincidir los nombres de archivo con comodines en Linux

Para el propósito de este artículo, usaremos los siguientes archivos para demostrar cada ejemplo.

createbackup.sh  list.sh  lspace.sh        speaker.sh
listopen.sh      lost.sh  rename-files.sh  topprocs.sh

1. Este comando hace coincidir todos los archivos con nombres que comienzan con l (que es el prefijo) y terminan con una o más ocurrencias de cualquier carácter.

$ ls -l l*	

2. Este ejemplo muestra otro uso de * para copiar todos los nombres de archivo con el prefijo users-0 y que terminan con una o más ocurrencias de cualquier carácter.

$ mkdir -p users-info
$ ls users-0*
$ mv -v users-0* users-info/	# Option -v flag enables verbose output

3. El siguiente comando hace coincidir todos los archivos con nombres que comienzan con l seguidos de cualquier carácter y terminan con st.sh (que es el sufijo).

$ ls l?st.sh	

4. El siguiente comando hace coincidir todos los archivos con nombres que comienzan con l seguido de cualquiera de los caracteres en el corchete pero terminan con st.sh .

$ ls l[abdcio]st.sh 

Cómo combinar comodines para hacer coincidir nombres de archivo en Linux

Puede combinar comodines para crear un criterio de coincidencia de nombre de archivo complejo, como se describe en los siguientes ejemplos.

5. Este comando coincidirá con todos los nombres de archivo con el prefijo de dos caracteres seguidos de st pero terminando con una o más ocurrencias de cualquier carácter.

$ ls
$ ls ??st*

6. Este ejemplo coincide con nombres de archivo que comienzan con cualquiera de estos caracteres [clst] y terminan con una o más ocurrencias de cualquier carácter.

$ ls
$ ls [clst]*

7. En estos ejemplos, solo los nombres de archivo que comienzan con cualquiera de estos caracteres [clst] seguido de uno de estos [io] y luego cualquier carácter individual, seguido de un t y, por último, se enumerarán una o más ocurrencias de cualquier carácter.

$ ls
$ ls [clst][io]?t*

8. Aquí, se eliminarán los nombres de archivo prefijados con una o más ocurrencias de cualquier carácter, seguidos de las letras tar y que terminen con una o más ocurrencias de cualquier carácter.

$ ls
$ rm *tar*
$ ls

Cómo hacer coincidir los personajes establecidos en Linux

9. Ahora veamos cómo especificar un conjunto de caracteres. Considere los nombres de archivo a continuación que contienen información de los usuarios del sistema.

$ ls

users-111.list  users-1AA.list  users-22A.list  users-2aB.txt   users-2ba.txt
users-111.txt   users-1AA.txt   users-22A.txt   users-2AB.txt   users-2bA.txt
users-11A.txt   users-1AB.list  users-2aA.txt   users-2ba.list
users-12A.txt   users-1AB.txt   users-2AB.list  users-2bA.list

Este comando coincidirá con todos los archivos cuyo nombre comience con users-i , seguido de un número, una letra minúscula o un número, luego un número y termina con una o más ocurrencias de cualquier carácter.

$ ls users-[0-9][a-z0-9][0-9]*

El siguiente comando coincide con los nombres de archivo que comienzan con users-i , seguido de un número, una letra o número en minúscula o mayúscula, luego un número y termina con una o más ocurrencias de cualquier carácter.

$ ls users-[0-9][a-zA-Z0-9][0-9]*

Este comando que sigue coincidirá con todos los nombres de archivo que comiencen con users-i , seguido de un número, una letra minúscula o mayúscula o un número, luego una letra minúscula o mayúscula y termina con una o más ocurrencias de cualquier personaje.

$ ls users-[0-9][a-zA-Z0-9][a-zA-Z]*

Cómo negar un conjunto de caracteres en Linux

10. También puede negar un conjunto de caracteres usando el símbolo ! . El siguiente comando enumera todos los nombres de archivo que comienzan con users-i , seguidos de un número, cualquier carácter de nombre de archivo válido aparte de un número, luego una letra minúscula o mayúscula y termina con una o más ocurrencias de cualquier personaje.

$ ls users-[0-9][!0-9][a-zA-Z]*

¡Eso es todo por ahora! Si ha probado los ejemplos anteriores, ahora debería comprender bien cómo funcionan los comodines para hacer coincidir los nombres de archivo en Linux.

También le gustaría leer estos artículos siguientes que muestran ejemplos del uso de comodines en Linux:

  1. Cómo extraer archivos Tar a un directorio específico o diferente en Linux
  2. Tres formas de eliminar todos los archivos de un directorio, excepto uno o pocos archivos con extensiones
  3. Diez consejos útiles para escribir scripts de bash efectivos en Linux
  4. Cómo usar Awk y expresiones regulares para filtrar texto o cadenas en archivos

Si tiene algo que compartir o una pregunta que hacer, utilice el formulario de comentarios a continuación.