So laden Sie alle Dateien mit dem Namen emp* mit curl von einer FTP-Site herunter

So laden Sie alle Dateien mit dem Namen emp* mit curl von einer FTP-Site herunter

Wie kann ich alle aus einem FTP-Site-Verzeichnis heruntergeladenen Dateien mit Dateinamen wie emp* abrufen?

Bitte vorschlagen.

Antwort1

Ich habe diesen bashEinzeiler 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 iund 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).

verwandte Informationen