bash скрипт переместить файл в папки по названию

Надеюсь, вы мне поможете ...

Я создал скрипт на perl и bash для резервного копирования моих брандмауэров и передач через 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

, поэтому этот файл переносится в мою папку 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

мой вопрос заключается в том, как улучшить мой сценарий для динамического перемещения этих файлов в другую папку на основе имени (в данном случае по IP-адресу)

, например: 10.160.23.1_20140606. cfg move to /deploy/backups/10.160.23.1/

заключается в том, что ответ на этот вопрос наверняка был в Google, но он хотел узнать, есть ли конкретное решение для этого запроса, а также узнать, как это сделать :)

Спасибо!

1
задан 6 June 2014 в 21:29

1 ответ

Просто преобразуйте имя файла в пространство данных, затем управляйте им для извлечения информации, Вы хотите, затем используете информацию. ПРИМЕЧАНИЕ: Для производства, используйте более ограниченное соответствие файла, чем /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
1
ответ дан 6 June 2014 в 21:29

Другие вопросы по тегам:

Похожие вопросы: