Los comodines, también conocidos como metacaracteres, son una bendición cuando se trata de buscar nombres de archivos particulares de un montón de archivos con nombres similares. Por ejemplo, al usar comodines en Linux, puede usar el ls comando, rm comando, o cualquier otro comando de Linux para el caso, en varios archivos siempre que coincidan con los criterios definidos.
En esta lectura, discutiremos cómo puede usar comodines en Linux para optimizar su flujo de trabajo y ser más productivo. Pero primero, echemos un vistazo rápido a los comodines más poderosos y comúnmente usados en Linux:
- El asterisco (*) :El (*) el comodín representa cualquier número de caracteres desconocidos. Esto es útil cuando se buscan documentos o archivos pero solo se recuerda una parte de su nombre.
- El signo de interrogación (?) :El (?) el comodín representa solo un carácter desconocido. Esto es útil cuando tiene una lista de archivos con nombres similares y no está seguro de algunos caracteres.
- Los caracteres entre paréntesis ([ ]) :El ([ ]) El comodín, el tercer corchete y no el primero, se usa para hacer coincidir cualquier aparición de caracteres definidos dentro de los corchetes. Esta opción es útil cuando se trata de archivos en mayúsculas y minúsculas, como veremos más adelante.
Ahora, me doy cuenta de que toda esta información no tiene sentido si nunca antes ha tratado con comodines. Sin embargo, para ayudarlo a aclarar su confusión, hemos elaborado una guía detallada, que incluye 10 ejemplos, para asegurarnos de que comprende correctamente la función de los comodines y comienza a usarlos usted mismo.
Ejemplos de coincidencia de nombres de archivo mediante comodines
Para comenzar, usemos todos los comodines que discutimos anteriormente y veamos cómo usarlos para hacer coincidir los nombres de archivo. Para hacer esto, usaremos el siguiente conjunto de archivos:
- Este comando coincidirá con todos los nombres de archivo que comienzan con la letra M y terminando con una o más apariciones de cualquier carácter.
$ ls -l M*
Salida:
Observe cómo solo coincide con los archivos que comienzan con la "M" mayúscula y no con la "m" minúscula.
2. Este comando copiará todos los nombres de archivo que comiencen con My-Data y terminando con una o varias apariciones de cualquier carácter.
$ ls My-Data*
Salida:
3. Este comando coincidirá con todos los archivos que comiencen con la letra M , terminando con la letra N , y tener 1 carácter en el medio.
$ ls M?N.sh
Salida:
4. Este comando coincidirá con todos los archivos que comiencen con la letra M , terminando con la letra N , pero con solo 1 carácter en el medio pertenece a la lista de caracteres definidos entre corchetes [AEIOU] .
$ ls M[AEIOU]N.sh
Salida:
4 ejemplos de combinación de diferentes comodines para hacer coincidir nombres de archivo
Ahora, para impulsar su eficacia, puede mezclar y combinar estos comodines para trabajar juntos y ser más efectivos en la coincidencia de nombres de archivo.
- Aquí hay un comando que lo ayudará a encontrar cualquier nombre de archivo que pueda tener 3 caracteres cualesquiera (incluso sin caracteres) seguido de pastel y terminando con una o más apariciones de cualquier carácter.
$ ls ???cake*
Salida:
2. Aquí hay un comando que coincidirá con todos los nombres de archivo que comiencen con cualquiera de estos caracteres entre corchetes [MNLOP] y terminar con una o más apariciones de cualquier carácter.
Veamos también qué sucede cuando reemplazamos [MNLOP] con [mnlop] .
Entonces, los comandos que usaremos son:
$ ls [MNLOP]*
$ ls [mnlop]*
Salida:
Como puede ver, debe tener en cuenta las mayúsculas y minúsculas de las letras que ingresa en el comodín de paréntesis, ya que eso influirá en el resultado.
3. Aquí hay un comando que hará coincidir todos los nombres de archivo con cualquiera de estos caracteres [MNLOP] como el primero, cualquiera de estos caracteres [AEIOU] como el segundo, seguido de N , y finalmente terminando con una o más apariciones de cualquier carácter.
$ ls [MNLOP][AEIOU]N*
Salida:
Observe cómo (*) el comodín solo ayuda a encontrar todas las extensiones de los nombres de archivo.4.
Aquí hay un comando que coincidirá con todos los nombres de archivo que comiencen con una o más apariciones de cualquier carácter que conduzca a M , seguido de cualquier carácter 1, luego seguido de N y luego termina con una o más apariciones de cualquier carácter.
$ ls *M?N*
Salida:
Uso de comodines para hacer coincidir el conjunto de caracteres
A estas alturas, debería tener un conocimiento práctico de cómo funcionan los comodines. Ahora podemos centrarnos en algunos casos de uso avanzado donde los comodines son invaluables.
Por ejemplo, el comodín corchete le permite definir un rango de caracteres usando [-] en lugar de escribir todos los caracteres. Esto puede ser extremadamente útil cuando desea especificar un conjunto de caracteres y hacer coincidir los nombres de archivo en función de dónde aparecen los caracteres.
Para hacer esto, usaremos el siguiente conjunto de archivos, como se muestra en la imagen:
Como puede ver, la imagen que hemos creado es una lista de archivos que contienen diferentes datos de Pokémon.
Ahora para encontrar todos los nombres de archivo que comienzan con pokemon- seguido de un número, luego cualquier carácter alfanumérico, nuevamente seguido de un número y luego terminando con una o más apariciones de cualquier carácter, podemos usar el siguiente comando:
$ls pokemon-[0-9][0-9a-zA-Z][0-9]*
Salida:
La parte [0-9] representa cualquier carácter numérico entre 0 a 9 .
La siguiente parte [0-9a-zA-Z] representa cualquier número de caracteres entre 0 a 9 , o cualquier letra minúscula entre a a z, o una letra mayúscula entre A a Z .
Como tal, si cambiamos [0-9a-zA-Z] con [0-9a-z] , puede ver que el resultado no incluye ningún nombre de archivo con letras mayúsculas en la posición designada.
$ls pokemon-[0-9][0-9a-z][0-9]*
Salida:
Uso de comodines para negar un conjunto de caracteres
Al igual que puede especificar un conjunto de caracteres, también puede negar un conjunto de caracteres al hacer coincidir los nombres de los archivos. Aquí hay un ejemplo de cómo se hace:
$ls pokemon-[0-9][!a-z][0-9]*
Salida:
Esto coincide con todos los nombres de archivo que comienzan con pokemon- seguido de cualquier carácter numérico, luego de cualquier carácter que no sea minúscula, seguido de cualquier carácter numérico y, finalmente, terminando con una o más apariciones de cualquier carácter.
Usando [!a-z], estamos negando el conjunto de todas las letras minúsculas. Ahora, los nombres de archivo coinciden con cualquier carácter que no sea una letra minúscula.
Conclusión
Eso nos lleva al final de nuestro vistazo rápido a los comodines de Linux y cómo usarlos. Resumiendo todo, en pocas palabras, el asterisco (*) el comodín es más útil cuando conoce el nombre del archivo pero no la extensión. El signo de interrogación (?) el comodín puede ayudarlo si olvida algunos caracteres del nombre de archivo. El corchete ([]) el comodín es útil cuando desea contener su búsqueda dentro de un conjunto de caracteres definidos.