bash move arquivo para pastas baseadas em nome

1

Espero que você possa me ajudar ...

Eu fiz um script perl e bash para fazer um backup dos meus firewalls e transferências via 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

então isso transfere o arquivo para meu diretório 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

minhas perguntas é como melhorar meu script para mover esses arquivos dinamicamente para outra pasta com base no nome (neste caso, no endereço IP)

por exemplo: 10.160.23.1_20140606.cfg mover para /deploy/backups/10.160.23.1 /

é que a resposta para isso certamente estava no Google, mas queria saber se havia uma solução específica para essa solicitação e também aprender como fazer:)

Obrigado!

    
por user289111 06.06.2014 / 19:29

1 resposta

1

Transforme simplesmente o nome do arquivo em espaço para dados, depois manipule-o para extrair as informações desejadas e use as informações. OBSERVAÇÃO: Para produção, use uma correspondência de arquivo mais restrita 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
    
por waltinator 07.06.2014 / 06:59