script bash mueve archivos a carpetas según el nombre

script bash mueve archivos a carpetas según el nombre

Espero que puedas ayudarme...

Hice un script en perl y bash para hacer una copia de seguridad de mis firewalls y transferencias vía tftp.

#!/bin/sh 

 perl /deploy/scripts/backups/10.160.23.1.pl > /dev/null 2>&1
 perl /deploy/scripts/backups/10.160.23.2.pl > /dev/null 2>&1

entonces esto transfiere el archivo a mi directorio tftp /tftpboot/

ls -l /tftpboot/
total 532
-rw-rw-rw- 1 tftp tftp 209977 jun  6 14:01 10.160.23.1_20140606.cfg
-rw-rw-rw- 1 tftp tftp 329548 jun  6 14:02 10.160.23.2_20140606.cfg

Mi pregunta es cómo mejorar mi secuencia de comandos para mover estos archivos dinámicamente a otra carpeta según el nombre (en este caso, la dirección IP).

Por ejemplo: 10.160.23.1_20140606.cfg mover a /deploy/backups/10.160.23.1/

Es que la respuesta a esto seguramente estaba en Google, pero quería saber si había alguna solución particular a esta solicitud y también saber cómo hacerlo :)

¡Gracias!

Respuesta1

Simplemente transforme el nombre del archivo en espacio de datos, luego manipúlelo para extraer la información que desea y luego use la información.NOTA:Para producción, utilice una coincidencia de archivos más restringida que/tftpboot/*.cfg

#!/bin/bash  
for file in /tftpboot/*.cfg ; do
    ipaddr=$( echo "$file" | cut -d/ -f3 | cut -d_ -f1 )  
    [ -d /deploy/backups/${ipaddr} || mkdir -p /deploy/backups/${ipaddr}  
    mv --verbose "$file" /deploy/backups/${ipaddr}/
done

información relacionada