
Wie kann ich alle aus einem FTP-Site-Verzeichnis heruntergeladenen Dateien mit Dateinamen wie emp* abrufen?
Bitte vorschlagen.
Antwort1
Ich habe diesen bash
Einzeiler erfolgreich mit einem CentOS 6.5 FTP-Mirror getestet, ihn aber anonymisiert, um Missbrauch vorzubeugen:
for i in `curl -i ftp://ftp.example.com/pub/centos/6.5/updates/i386/repodata/ | awk '{print $9}' | grep ^8`; do curl -O http://ftp.eample.com/pub/centos/6.5/${i} ; done
Zur Erklärung: Dies geht an den FTP-Server, holt die Verzeichnisliste (erste Curl) und leitet die Daten an awk weiter, um nur die Dateinamen zurückzugeben. Schließlich wird dies an grep weitergeleitet, um nur die Dateien abzugleichen, die mit der Nummer 8 beginnen, um Ihre emp*
Anforderung zu simulieren.
Diese gefilterten Dateinamen werden zur Variable i
und ich verwende dann eine einfache For-Schleife, um jeden einzelnen abzurufen, indem ich sie an die URL für die zweite Curl-Anfrage anhänge. Am Ende habe ich diese beiden Dateien erhalten:
-rw-r--r-- 1 adam staff 362 11 Jul 13:22 819455e9f840760fcbdccf0283e4324ceabc8512f246e911d39424760ed1729e-primary.xml.gz
-rw-r--r-- 1 adam staff 360 11 Jul 13:22 8e4d3dd261375d31b35b6870e187d841633c68a400e4d11bb7234fea517cdbaa-other.xml.gz
Antwort2
Wenn ich nichts übersehen habe, müssen Sie nur mit cd in das Verzeichnis wechseln und „mget emp*“ verwenden. Sie können die „Prompt“-Einstellung ändern (es handelt sich um einen Umschaltbefehl), wenn Sie nicht auf jede Datei antworten möchten (J/N).