2017-04-11 3 views
0

Ich habe s3 Ordner wo Dateien von einer Anwendung bereitgestellt werden. Ich muss diese Dateien basierend auf einer angegebenen Ordnerstruktur mit den Dateinamen verschieben.Verschieben Sie Dateien in S3 in Ordnern basierend auf Dateiname

Die Dateien werden in einem bestimmten Format namens:

s3://bucketname/staging/file1_YYYY_MM_DD_HH_MM_SS 
s3://bucketname/staging/file1_YYYY_MM_DD_HH_MM_SS 

Ich brauche sie zu bewegen Ordner dieses Format s3:

s3://bucketname/file1/YYYY/MM/DD 

ich den folgenden Code haben jetzt die Dateinamen alle zu speichern im Staging-Ordner in einer Datei vorhanden.

path=s3://bucketname/staging 
count=`s3cmd ls $path | wc -l` 
echo $count 

if [[ $count -gt 0 ]]; then 
    list_files_to_move_s3=$(s3cmd ls -r $path | awk '{print $4}' > files_in_bucket.txt) 
     echo "exists" 
else 
     echo "do not exist" 
fi 

Ich muss jetzt die Dateinamen lesen und die Dateien entsprechend verschieben. Können Sie bitte helfen.

Antwort

0

Sie können den Inhalt von files_in_bucket.txt mit sed analysieren, um die Ausgabe, die Sie wollen produzieren:

---> cat tests3.txt 
s3://bucketname/staging/file1_YYYY_MM_DD_HH_MM_SS 
s3://bucketname/staging/file1_YYYY_MM_DD_HH_MM_SS 

---> sed -r "s|^(s3://.*)/.*/(.*)_(.*)_(.*)_(.*)_.*_.*_.*$|\1/\2/\3/\4/\5|g" tests3.txt 
s3://bucketname/file1/YYYY/MM/DD 
s3://bucketname/file1/YYYY/MM/DD 

---> 

Was dort geschieht, ist es jede Zeile aus der Datei tests3.txt Parsen aus, wobei jedes Bit in Klammern gespeichert als eine "Variable" (ich bin nicht sicher, was der richtige Begriff für sed ist, aber Sie bekommen die Idee), die dann in der Substitutionsstring als \1, \2, \3 usw. referenziert werden kann. So ist es das erste Bit auswählen, einschließlich bis zum ersten Schrägstrich, Überspringen des "Staging" -Bits und dann Auswählen der Datei- und Datumsteile des Dateinamens.

Beachten Sie, dass dies ein sehr standardisiertes Layout der Dateinamen und Ihrer gewünschten Ausgabe voraussetzt.

Lassen Sie mich wissen, wenn Sie Fragen dazu haben oder weitere Hilfe benötigen.

Verwandte Themen