educación, informática y demás

Comandos, Informática, Sistemas operativos, Windows

Patrones simples de ficheros: Comodines * e ?

Hemos visto como podemos trabajar con ficheros y directorios con varios comandos disponibles en el intérprete de comandos. Hasta ahora, hemos hecho referencia a ficheros o directorios concretos a través de su ruta. Pero, ¿qué sucede cuando queremos seleccionar varioas ficheros en una operación?. Tendríamos que escribir uno a uno la ruta de cada fichero, esto puede ser muy complicado, tedioso e, incluso en muchos casos, imposible.

Para ello podemos utilizar patrones. Con la ayuda de un par de caracteres especiales podemos seleccionar varios ficheros que concuerden o coincidan con el patrón. De esta forma, podemos decirle a un comando concreto, como COPY, que copie todos los ficheros que tengan extensión TXT a un directorio destino concreto.

Para crear patrones simples podemos utilizar dos caracteres especiales o comodines:

  • * El caracter * se corresponde con cualquier cadena de caracteres de cualquier longitud. Es decir, cualquier conjunto de caracteres, incluido el conjunto vacío.
  • ? El caracter ? se corresponde con un solo caracter, el que sea, pero uno obligatoriamente.

De esta forma, jugando con estos caracteres especiales, podemos seleccionar todos los ficheros que concuerden o cumplan con el patrón. Por ejemplo:

  1. Todos los ficheros con extensión TXT.
  2. Todos los ficheros que tengan un nombre de cuatro caracteres y cualquier extensión
  3. Todos los ficheros cuyo nombre comience por la letra «a» y termine por la letra «d» cuya extensión sea EXE.
  4. Todos los ficheros cuyo nombre tenga como mínimo cuatro caracteres y extensión PDF:
  5. Todos los ficheros cuyo nombre comience por 01 y tengan extensión JPG:
  6. Todos los ficheros JPG cuyo nombre termine por la cadena «vacaciones».
  7. Todos los ficheros cuyo nombre contenga la cadena verano y tengan extensión PDF.
  8. Todos los ficheros con extensión ODS cuyo nombre contenga la palabra «factura».
  9. Todos los ficheros que cotengan la cadena «blues» en su nombre, que termine el nombre con «01» y sea de tipo MP3.
  10. Todos los ficheros cuyo nombre termine por «01» y cuya extensión comience por «h».
  11. Todos los ficheros cuyo nombre comience por la letra «a», su penúltima letra sea una «d» y cuya extensión sea EXE.
  12. Todos los ficheros cuyo nombre contenga la cadena verano tengan la extensión que tengan

Solución

  1. Todos los ficheros con extensión TXT. El patrón que deberíamos utilizar será *.TXT
  2. Todos los ficheros que tengan un nombre de cuatro caracteres y cualquier extensión: ????.*
  3. Todos los ficheros cuyo nombre comience por la letra «a» y termine por la letra «d» cuya extensión sea EXE. a*d.EXE
  4. Todos los ficheros cuyo nombre tenga como mínimo cuatro caracteres y extensión PDF: ????*.PDF
  5. Todos los ficheros cuyo nombre comience por 01 y tengan extensión JPG: 01*.JPG
  6. Todos los ficheros JPG cuyo nombre termine por la cadena «vacaciones». *vacaciones.jpg
  7. Todos los ficheros cuyo nombre contenga la cadena verano y tengan extensión PDF. *verano*.PDF
  8. Todos los ficheros con extensión ODS cuyo nombre contenga la palabra «factura». *factura*.ODS
  9. Todos los ficheros que cotengan la cadena «blues» en su nombre, que termine el nombre con «01» y sea de tipo MP3. *blues*01.MP3
  10. Todos los ficheros cuyo nombre termine por «01» y cuya extensión comience por «h». *01.h* (cuidado, porque esto es muy abierto).
  11. Todos los ficheros cuyo nombre comience por la letra «a», su penúltima letra sea una «d» y cuya extensión sea EXE. a*d?.EXE
  12. Todos los ficheros cuyo nombre contenga la cadena verano tengan la extensión que tengan *verano*, si queremos evitar directorios que no tengan extensión y dejar patente que tiene que tener una extensión: *verano*.*

Ejercicios

Ya hemos visto como se pueden crear patrones para seleccionar varios ficheros que los cumplan.

Vamos a resolver un par de ejercicios simples utilizando los patrones con comandos:

  • Muestra en pantalla el contenido de todos los ficheros txt que están en tu directorio actual.

type *.txt

type .\*.txt

Ahora vamos a usarlos en comandos para practicar cómo se utilizan en un entorno real.

  1. Copia todos los ficheros de tu directorio actual con extensión PDF cuyo nombre contenga la cadena ssoo al directorio DOCS que está en el directorio padre del directorio actual.
  2. Copia todos los ficheros de tu directorio actual y todos sus subdirectorios con extensión PDF cuyo nombre contenga la cadena ssoo al directorio de Docs que está dentro del directorio backup cuya ruta está en la variable de entorno backup.
  3. Borra todos los ficheros que contengan la cadena 2020 en su nombre y tengan extensión TMP del directorio proyectos que está en el raíz de la unidad C: y todos sus subdirectorios.
  4. Borra todos los ficheros con extensión HTML que están en el directorio C:\Web\Dev utilizando rutas relativas. Directorio actual C:\Users\Javier
  5. Copia todos los ficheros con extensión XML del directorio docs del perfil del usuario actual al directorio C:\Web\Dev.
  6. Copia todos los ficheros con extensión XML del directorio docs del perfil del usuario actual y todos sus subdirectorios al directorio con el nombre del usuario actual que está en el directorio C:\Web\Dev.
  7. Busca en tu disco duro, unidad lógica C:, todos los ficheros PDF cuyo nombre contenga la cadena villancico.
  8. Almacena en un fichero llamado notepad.txt que estará en el escritorio del perfil del usuario actual, el listado de todos los ficheros que contengan en su nombre la cadena notepad y que tengan extensión exe de la unidad C:. Si el fichero ya existía, sobrescríbelo.
  9. Añade al fichero notepad.txt creado en la pregunta anterior, una cadena de texto con el nombre del usuario actual, seguida de la cadena de texto: “TimeStamp: “ seguida de la Fecha y hora actual. Utiliza un solo comando.
  10. Crea un fichero de texto plano llamado misTextos.txt en el directorio actual cuyo contenido será el contenido de todos los ficheros con extensión txt que hay en el directorio Documentos del perfil del usuario actual. (Type %USERPROFILE%\Documentos\*.txt > misTextos.txt)

Soluciones

1. Copia todos los ficheros de tu directorio actual con extensión PDF cuyo nombre contenga la cadena ssoo al directorio DOCS que está en el directorio padre del directorio actual.

Lo primero que tenemos que saber es el comando a utilizar. Podemos utilizar tanto copy como xcopy. Podemos utiliza copy porque la copia es de los ficheros que están en el directorio actual, sin incluir sus subdirectorios. COPY ORIGEN DESTINO.

ORIGEN. Necesitamos utilizar un patrón: *ssoo*.PDF. Ese es el patrón de los ficheros, ahora tenemos en la ruta: .\*ssoo*.PDF o simplemente *ssoo*.PDF, porque estamos haciendo referencia a los ficheros del directorio actual.

Destino. Directorio Docs que está dentro del directorio padre, así qure la ruta sería ..\Docs.

De esta forma, el comando a ejecutar sería:

  • copy .\*ssoo*.pdf ..\docs
  • xcopy .\*ssoo*.pdf ..\docs

2. Copia todos los ficheros de tu directorio actual y todos sus subdirectorios con extensión PDF cuyo nombre contenga la cadena ssoo al directorio de Docs que está dentro del directorio backup cuya ruta está en la variable de entorno backup.

Como nos piden copiar ficheros dentro del subarbol de directorios, tendremos que utilizar xcopy con la opción /S. Usamos /S en lugar de /E porque queremos copiar ficheros, no directorios vacíos.

Origen. .\*ssoo*.pdf o *ssoo*.pdf

Destino. %backup%\Docs

Comando final: xcopy /S *ssoo*.pdf %backup%\Docs

3. Borra todos los ficheros que contengan la cadena 2020 en su nombre y tengan extensión TMP del directorio proyectos que está en el raíz de la unidad C: y todos sus subdirectorios.

Para borrar utilizamos el comando del. Nos dicen que tenemos que borrar todos los ficheros que contengan la cadena 2020 y que tengan extesión tmp. El patrón *2020*.tmp, pero este patrón tenemos que usarlo como parte de una ruta, para indicar que esos ficheros están dentro de un directorio concreto, en este caso C:\Proyectos. Por tanto, la ruta sería C:\Proyectos\*2020*.tmp.

Para que borre los ficheros del directorio C:\Proyectos y todos sus subdirectorios tenemos que poner /S.

del /S C:\proyectos\*2020*.tmp

4. Borra todos los ficheros con extensión HTML que están en el directorio C:\Web\Dev utilizando rutas relativas. Directorio actual C:\Users\Javier

Como en el caso anterior usamos el comando del, pero en este caso no nos indican que borremos en todos los subdirectorios del directorio C:\Web\Dev, así que no utilizaríamos la opción /S del comando del.

La ruta absoluta del directorio sería C:\Web\Dev. El patrón es muy simple, sería *.HTML. Por tanto, usando ruta absoluta sería: C:\Web\Dev\*.html.

Pero, nos piden que utilicemos una ruta relativa. Como el directorio actual es C:\Users\Javier, la ruta relativa sería ..\..\Web\Dev\*.html

El comando a ejecutar sería: del ..\..\Web\Dev\*.html

5. Copia todos los ficheros con extensión XML del directorio docs del perfil del usuario actual al directorio C:\Web\Dev.

Para copiar ficheros usamos el comando copy o xcopy. El patrón que nos permitirá seleccionar todos los ficheros con extensión xml será *.xml. Ahora tenemos que determinar la ruta de origen de los ficheros. Nos dicen que estará en el directorio docs que está en el perfil del usuario actual.

Como no sabemos donde está el directorio personal o perfil del usuario actual, tenemos que utilizar una variable de entorno: USERPROFILE. La ruta de los ficheros origen será: %USERPROFILE%\Docs\*.xml

El destino será la ruta del directorio C:\Web\Dev

xcopy «%USERPROFILE%\Docs\*.xml» C:\Web\Dev

También podríamos utilizar copy.

6. Copia todos los ficheros con extensión XML del directorio docs del perfil del usuario actual y todos sus subdirectorios al directorio con el nombre del usuario actual que está en el directorio C:\Web\Dev.

Comando: Xcopy /S. Añadimos /S porque tiene que copiar del directorio origen y todos sus subdirectorios.

Origen: “%USERPROFILE%\Docs\*.xml”

Destino: “C:\Web\Dev\%USERNAME%”

xcopy /S “%USERPROFILE%\Docs\*.xml” “C:\Web\Dev\%USERNAME%”

7. Busca en tu disco duro, unidad lógica C:, todos los ficheros PDF cuyo nombre contenga la cadena villancico.

DIR /S C:\*villancico*.pdf

8. Almacena en un fichero llamado notepad.txt que estará en el escritorio del perfil del usuario actual, el listado de todos los ficheros que contengan en su nombre la cadena notepad y que tengan extensión exe de la unidad C:. Si el fichero ya existía, sobrscríbelo.

Como nos están diciendo que almacenemos en un fichero tendremos que utilizar, seguramente, redirecciones. En este caso, una redirección simple o de sobrescritura.

¿Cuál es la ruta del fichero donde vamos a escribir la información? %USERPROFILE%\Desktop\notepad.txt.

… > %USERPROFILE%\Desktop\notepad.txt

El comando que tenemos que utilizar para buscar o listar todos los ficheros notepad es el comando DIR con la opción /S. Como punto de origen, será el directorio raíz de la unidad C:, porque nos piden que busquemos en toda la unidad C:

dir /S C:\… > %USERPROFILE%\Desktop\notepad.txt

A esto habría que añadirle el patrón que seleccione solo los ficheros que nosotros queremos mostrar o buscar: *notepad*.exe

Finalmente, el comando a ejecutar sería: dir /S C:\*notepad*.exe > %USERPROFILE%\Desktop\notepad.txt

Crea un fichero de texto plano llamado misTextos.txt en el directorio actual cuyo contenido será el contenido de todos los ficheros con extensión txt que hay en el directorio Documentos del perfil del usuario actual. (Type %USERPROFILE%\Documentos*.txt > misTextos.txt)

Dejar una respuesta