2016-07-12 10 views
1

Ich wget Lauf Daten von einem FTP-Server wie folgt zu erhalten:Datum von Dateiname abrufen und in Ordner sortieren?

wget -r -nH -N --no-parent ftp://username:[email protected]/ -P /home/data/ 

Alle Dateien in einem Format diese ähnlich sind:

2016_07_10_bob-randomtext.csv.gz 
2016_07_11_joe-importantinfo.csv.gz 

Gerade jetzt alle diese es setzen Dateien in /home/data/.

Was ich tun möchte, ist die Zeit aus dem Dateinamen zu bekommen und sie in ihre eigenen Ordner basierend auf dem Datum. Zum Beispiel:

/home/data/2016_07_10/2016_07_10_bob-randomtext.csv.gz 
/home/data/2016_07_11/2016_07_11_joe-importantinfo.csv.gz 

Basiert weg von der answers here ist es möglich, das Datum aus einem Dateinamen zu erhalten. Allerdings bin ich nicht wirklich sicher, wie man das automatisch in einen Ordner umwandelt ...

Sorry, wenn das ein bisschen verwirrend ist. Jede Hilfe oder Beratung wäre willkommen.

+0

sind Sie OK mit dem Herunterladen von entweder/home/data oder/tmp/Daten und dann bewegt zu/home/data/YYYY_MM_DD? Das wird einfacher sein. Oder haben Sie eine dringende Anforderung, direkt zu YYYY_MM_DD dir herunterzuladen? Viel Glück. – shellter

+0

Sicher, wenn Sie wissen, wie das geht, bin ich völlig offen dafür, alles in einen einzigen Ordner zu laden und es dann dorthin zu verschieben, wo es hingehört. – Edward

Antwort

1

Halten Sie den Download aller Dateien in einem Verzeichnis/home/files

destination=/home/data 
for filename in /home/files/*; do 
    if [[ -f "$filename" ]]; then   # ignore it if it's a directory (not a file) 
     name=$(basename "$filename") 
     datedir=$destination/${name:0:10} # first 10 characters of the filename 
     mkdir -p "$datedir"    # create the directory if it doesn't exist 
     mv "$filename" "$datedir" 
    fi 
done 
+0

Können Sie es ändern, so dass die Dateien ursprünglich in/home/files/heruntergeladen und dann in/home/data/DATE verschoben werden? Ich bin mir nicht sicher, wie man "mv" $ filename "" $ date "' ändert, damit es so funktioniert. – Edward

+0

Sicher. Antwort aktualisiert –

+0

Super, danke für die Hilfe! – Edward