educación, informática y demás

24.13 - Repaso general

Ejercicio de Scripts: Gestión de ficheros

Referencias

generaFicheros.sh – Versión 01

Vamos a crear un nuevo script llamado generaFicheros.sh. Inicialmente este script mostrará en pantalla los números del 1 al 500, uno detrás de otro, con la etiqueta previa de «Número: » seguido del número.

Solución


Una posible solución

generaFicheros.sh – Versión 02

Modifica el script generaFicheros.sh de forma que ahora se muestre la tabla de multiplicar de los números del 1 al 500. Utiliza una función que reciba como parámetro un número y muestre en pantalla la tabla de multiplicar de ese númerogeneraFicheros.sh – Versión 03

Deberás implementar la función tabla

Solución

Una posible solución es la siguiente

De esta forma la variable operador tomará valores del 1 al 10 y realizaremos la multiplicación del valor de la variable operador por el valor de la variable número.

generaFicheros.sh – Versión 03

Modifica el script generaFicheros.sh de forma que ahora en lugar de mostrar la tabla de multiplicar de los números del 1 al 500 almacene cada tabla en un fichero cuyo nombre será tablaXXX.txt dónde XXX será el número cuya tabla de multiplicar almacenaremos en él. Utiliza la función creada en el ejercicio anterior de forma que solo tengas que añadir un cambio en una sola línea del script.

Recuerda para guardar la salida de comandos en ficheros podemos utilizar las redirecciones de salida: simple o de sobrescritura, doble o de adición.

Solución

Vamos a ejecutar el script para que genere 500 ficheros 🙂

Vamos a elegir uno al azar

organizaFicheros.sh – Versión 01

Ahora tenemos muchos ficheros txt. En esta primera versión del script, queremos mostrar en pantalla el nombre de cada uno de los ficheros txt que está en el directorio actual.

El nombre de cada fichero debe venir precedido por la etiqueta: «Fichero: «.

Al finalizar el listado de los ficheros queremos saber cuántos ficheros .txt hay en el directorio actual.

Algunas ayudas

¿Cómo podemos contar el número de ficheros? Podemos hacer uso de wc -l pasándole como entrada a través de tubería el listado de ficheros con extensión txt en un directorio.

¿Cómo podemos recorrer los ficheros de un directorio?. Con un bucle for

Ahora nos queda ver qué ponemos en los … para que aparezcan los ficheros con extensión txt que hay en el directorio actual.

Solución

organizaFicheros.sh – Versión 02

Vamos a agrupar los ficheros en grupos de 50 ficheros. Es decir, mostraremos los primeros 50 ficheros, después los segundos 50 y así hasta que terminemos de mostrar el nombre de los ficheros.

Al inicio de cada bloque mostraremos un mensaje indicando el número del bloque, de estas forma:

[Bloque 1]

Fichero: leeme.txt

….

[Bloque 2]

Solución

Solución propuesta

organizaFicheros.sh – Versión 03

Vamos a modificar el script para que organice grandes cantidades de ficheros txt dentro de directorios por bloques. Este script almacenará los ficheros con extensión txt del directorio actual a directorios con el nombre del bloque de 50 ficheros al que pertenece. Estos directorios de bloque tendrán como nombre BloqueXX» dónde XX es el número de bloque.

Los directorios de bloque estarán dentro del directorio /educatica/txt. Si no existe el fichero de bloque, lo creará. Si existe el fichero destino, lo sobrescribirá.

Por ejemplo, Si no existe el directorio /educatica/txt/Bloque1, se creará. A continuación copiará los cincuenta ficheros propios de ese bloque en el directorio del bloque. Después pasará al bloque2 y así hasta que termine con los ficheros.

Solución propuesta

organizaFicheros.sh – Versión 04

Mejoras del script. Queremos poder cambiar el número de ficheros que pertenecerán a cada bloque en tiempo de ejecución cuando queramos. Además queremos poder realizar esta organización en cualquier directorio de origen, no solo en el directorio actual. Estos valores se recibirán por parámetro

También queremos realizar un control de errores:

  • El script debe ser ejecutado por root
  • El script debe recibir en el primer parámetro la ruta del directorio origen dónde están los ficheros txt
  • El script debe recibir por parámetro el número de ficheros por bloque

Solución

Dejar una respuesta