next up previous contents index
Next: Cuestiones adicionales a propósito Up: Uso del Intérprete de Previous: stdin, stdout, tuberías (pipelines)   Índice General   Índice de Materias


Expansión de nombres de ficheros

A menudo se desea que una orden trabaje con un grupo de ficheros. Los comodines (wildcards) se utilizan para crear patrones de expansión de nombres: una serie de caracteres y comodines que se expanden formando una lista de nombres de ficheros. Por ejemplo, el patrón /etc/* se expande en forma de lista de todos12.2 los ficheros de /etc.

* es un comodín que se corresponde a una ristra de caracteres, de manera que el patrón /etc/* se expandirá formando una lista de todos los ficheros que comiencen por /etc/.

Esta lista de nombres de ficheros es más útil como argumento de una orden. Por ejemplo, el directorio /etc contiene varios directorios denominados rc0.d, rc1.d, etc. Normalmente, para ver su contenido escribiría lo siguiente:

     ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d

     ls /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d
Como resulta tedioso, en su lugar podemos utilizar el comodín ?, tal como vemos aquí:

     ls /etc/rc?.d
/etc/rc?.d se expande en una lista de nombres de ficheros que comienzan por rc, seguido de un carácter cualquiera, seguido a su vez por .d.

Los comodines disponibles son los siguientes:

*
Se corresponde con cualquier grupo de 0 o más caracteres.
?
Se corresponde con exactamente (ni más, ni menos) un carácter.
[...]
Si encierra varios caracteres entre corchetes, el resultado es un comodín que se corresponde con esos caracteres. Por ejemplo, [abc] se corresponde con la a, b o la c. Si añade una ^ justo después del primero corchete, se invierte el significado; de manera que [^abc] se corresponde con cualquier carácter que no sea a, b o c. Puede incluir rangos, como [a-j], que se correspondan con cualquier carácter entre a y j. La correspondencia es dependiente de si las letras son mayúsculas o minúsculas, de manera que para permitir cualquier letra, tendrá que utilizar [a-zA-Z].
Los patrones de expansión son sencillos de comprender una vez que ha visto algunos ejemplos concretos:

*.txt
Esto le proporcionará una lista de todos los ficheros que acaben en .txt, ya que * se corresponde con cualquier cosa.
*.[hc]
Esto le proporciona una lista de ficheros cuyo nombre acabe tanto en .h como en .c.
a??
Le devuelve todos los nombres de ficheros de tres letras que comiencen por a.
[^a]??
Se corresponde con todos los ficheros cuyo nombre sea de tres letras y no comience por a.
a*
Esto le da todos los nombres de fichero que comiencen por a, independientemente de cuántas letras los compongan.


next up previous contents index
Next: Cuestiones adicionales a propósito Up: Uso del Intérprete de Previous: stdin, stdout, tuberías (pipelines)   Índice General   Índice de Materias
Enrique Zanardi 2000-11-26