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/

是這個問題的答案肯定是在谷歌上,但想知道是否有一個特定的解決方案來滿足這個請求,並學習如何做:)

謝謝!

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

相關內容