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


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

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

Estos comodines son interpretados por el shell y los resultados se devuelven al comando que ejecuta. Hay tres comodines principales en Linux:

  • An asterisk (*) – matches one or more occurrences of any character, including no character.
  • Question mark (?) – represents or matches a single occurrence of any character.
  • Bracketed characters ([ ]) – matches any occurrence of character enclosed in the square brackets. It is possible to use different types of characters (alphanumeric characters): numbers, letters, other special characters etc.

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

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

A los efectos 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 apariciones 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 termina con una o más apariciones 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 coincide con todos los archivos con nombres que comienzan con l seguido de cualquier carácter individual y que 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 entre corchetes, pero que terminan con st.sh .

$ ls l[abdcio]st.sh 

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

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

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

$ ls
$ ls ??st*

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

$ ls
$ ls [clst]*

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

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

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

$ ls
$ rm *tar*
$ ls

Cómo hacer coincidir los caracteres establecidos en Linux

9. Ahora veamos cómo especificar un conjunto de caracteres. Considere los siguientes nombres de archivo 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 apariciones 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 mayúscula o minúscula o un número, y luego un número y termina con una o más apariciones de cualquier carácter.

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

El siguiente comando coincidirá con todos los nombres de archivo que comiencen con users-i , seguidos de un número, una letra mayúscula o minúscula o un número, luego una letra mayúscula o minúscula y terminan con una o más apariciones 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 utilizando 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 válido de nombre de archivo aparte de un número, luego una letra mayúscula o minúscula y termina con una o más apariciones personaje.

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

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

Es posible que también desee leer estos siguientes artículos que muestran ejemplos de uso de comodines en Linux:

  1. How to Extract Tar Files to Specific or Different Directory in Linux
  2. 3 Ways to Delete All Files in a Directory Except One or Few Files with Extensions
  3. 10 Useful Tips for Writing Effective Bash Scripts in Linux
  4. How to Use Awk and Regular Expressions to Filter Text or String in Files

Si tiene algo que compartir o una pregunta (s) que hacer, use el formulario de comentarios a continuación.