Wie verwenden von AWS-CLI nur kopieren von Dateien im S3-bucket, die die übereinstimmung eines gegebenen string-Muster
Ich bin über die AWS CLI zum kopieren von Dateien aus einem S3-bucket, um mein R-Maschine mit einem Befehl wie unten:
system(
"aws s3 cp s3://my_bucket_location/~/my_r_location/--recursive --exclude '*' --include '*trans*' --region us-east-1"
)
Dies funktioniert wie erwartet, d.h. es kopiert alle Dateien in my_bucket_location, "trans" im Dateinamen befindet.
Das problem, das ich bin vor ist, dass ich noch andere Dateien mit ähnlichen Namenskonventionen, die ich nicht importieren möchten, die in diesem Schritt. Als ein Beispiel, in der Liste unten, ich will nur kopieren Sie die ersten beiden Dateien, nicht die letzten zwei:
File list
trans_120215.csv
trans_130215.csv
sum_trans_120215.csv
sum_trans_130215.csv
Wenn ich mit regex, ich könnte es mehr spezifische, wie "^trans_\\d+"
zu bringen, in der nur die beiden ersten Dateien machen, aber dies scheint nicht möglich, die mit AWS CLI. Also meine Frage gibt es eine Möglichkeit, auch komplexere pattern-matching mithilfe von AWS CLI wie unten?
system(
"aws s3 cp s3://my_bucket_location/~/my_r_location/--recursive --exclude '*' --include '^trans_\\d+' --region us-east-1"
)
Bitte beachten Sie, dass ich nur Informationen zu der Datei in Frage, d.h., ich will eine Datei importieren, die mit Muster "^trans_\\d+"
kann ich nicht benutzen die Tatsache, dass die anderen unerwünschten Dateien enthalten sum_ an den start, denn dies ist nur ein Beispiel, es könnten auch andere Dateien mit ähnlichen Namen wie "check_trans_120215.csv".
Ich habe gedacht, dass andere alternativen, wie unten, aber in der Hoffnung es gibt eine Möglichkeit zum einstellen der Kopie-Befehl, um zu vermeiden, die sich entweder von diesen Strecken:
- Auflistung aller Elemente im bucket > die Verwendung von regex in R, um die Dateien angeben, die ich möchte > Nur importieren Sie diese Dateien
- Halten Sie die copy-Befehl, wie es ist > löschen Sie unerwünschte Dateien auf der R Maschine nach dem kopieren
InformationsquelleAutor Sam Gilbert | 2016-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den alternativen, die Sie aufgelistet haben, sind die besten Optionen, weil S3 CLI nicht unterstützt
regex
.Verwendung von ein-und Ausschließen-Filter:
InformationsquelleAutor helloV
Setze dieses hier für andere zu finden, da hatte ich gerade herauszufinden. Hier ist, was ich kam mit:
Können Sie die regex in grep Suchbegriff. Zum Beispiel, ich war auf der Suche nach spezifischen Dateien zu löschen (daher der s3cmd del). Meine regex-sah aus wie:
'2016-11-04.*s3.*[DN][RS].*'
. Sie können anpassen, um den Schnitt für Ihren Einsatz. Sollte auch mits3cmd get
.InformationsquelleAutor crc32
hier ist die gleiche Lösung für das löschen, können Sie Sie ersetzen rm mit cp
Sie können es tun die Nutzung von aws cli : https://aws.amazon.com/cli/ und einige unix-Befehl.
das aws cli-Befehle funktionieren sollte:
wenn Sie wollen, um die sub-Ordner, die Sie hinzufügen sollten, die fahne --recursive
oder mit unix-Kommandos:
Erklärung:
InformationsquelleAutor ggcarmi