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: 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