bash 脚本根据名称将文件移动到文件夹

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 移至 /deploy/backups/10.160.23.1/

这个问题的答案肯定在 Google 上,但我想知道是否有针对此请求的特定解决方案,并了解如何解决:)

谢谢!

答案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

相关内容