Referencias
- Manual oficial de GNU/Bash. Podemos cosultar directamente la sección de la construcción for.
- También podemos consultar la sección de aritmética en GNU/Bash aquí.
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