Bash-Skript verschiebt Dateien basierend auf dem Namen in Ordner

Bash-Skript verschiebt Dateien basierend auf dem Namen in Ordner

Ich hoffe ihr könnt mir helfen...

Ich habe ein Perl- und Bash-Skript erstellt, um ein Backup meiner Firewalls und Übertragungen über TFTP zu erstellen

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

Dadurch wird die Datei in mein TFTP-Verzeichnis /tftpboot/ übertragen.

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

Meine Frage ist, wie ich mein Skript verbessern kann, um diese Dateien dynamisch in einen anderen Ordner zu verschieben, basierend auf dem Namen (in diesem Fall der IP-Adresse).

Zum Beispiel: 10.160.23.1_20140606.cfg verschieben nach /deploy/backups/10.160.23.1/

ist, dass die Antwort darauf sicherlich bei Google war, aber ich wollte wissen, ob es eine bestimmte Lösung für diese Anfrage gibt und auch erfahren, wie das geht :)

Danke!

Antwort1

Wandeln Sie den Dateinamen einfach in Datenraum um, bearbeiten Sie ihn dann, um die gewünschten Informationen zu extrahieren, und verwenden Sie dann die Informationen.NOTIZ:Verwenden Sie für die Produktion eine eingeschränktere Dateiübereinstimmung als/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

verwandte Informationen