bash スクリプトは名前に基づいてファイルをフォルダに移動する

bash スクリプトは名前に基づいてファイルをフォルダに移動する

助けていただければ幸いです...

ファイアウォールのバックアップとTFTP経由の転送を行うためのPerlとBashのスクリプトを作成しました。

#!/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

関連情報