2016-07-29 12 views
-1

Ich habe 300 Verzeichnisse/Ordner, jedes Verzeichnis hat zwei Spalten einzelne Datei (xxx.gz), ich möchte alle Dateien aus allen Ordnern in einer einzigen Datei zusammenführen. In allen Dateien ist die erste Spalte ID (ID), die gleich ist.Wie mehrere Dateien aus mehreren Verzeichnissen/Ordnern zusammengeführt werden

Wie alle Dateien in eine Datei zusammengeführt werden?

Und ich möchte Header für jede Spalte als Name der Datei im jeweiligen Verzeichnis.

Verzeichnisnamen sind: (68a7eb0a-123, b5694957-764, etc ..) und Dateien Namen sind: (a5c403c2, 292c4a2f etc), Verzeichnisnamen und die entsprechenden Dateinamen nicht identisch sind, ich Dateinamen wollen als Header.

all directories 
ls 
6809b1c3-75a5 
68e9b641-0cc9 
71ae07b8-8bde 
b7815cd2-1e69 
.. 
.. 

each directory contain single file: 

cd 6809b1c3-75a5 

ls bd21dc2e.txt.gz 
+1

zeigen Bitte ein Beispiel Verzeichnisstruktur und Dateiinhalt und die erwartete endgültige Datei. –

+1

[Lies alle deine Dateien] (http://stackoverflow.com/questions/11433432/importing-multiple-csv-files-into-r) dann [füge mehrere data.frames in einer Liste zusammen] (http: // stackoverflow .com/questions/8091303/Gleichzeitiges Zusammenführen mehrerer Datenrahmen in einer Liste). Diese Lösung sollte abhängig von den Dateigrößen und dem Arbeitsspeicher funktionieren. – zx8754

+0

@mona aktualisieren Sie bitte Ihre Post mit zusätzlichen Informationen mit ["Bearbeiten"] (http://stackoverflow.com/posts/38660539/edit). – zx8754

Antwort

0

Try this:

for i in * ; do for j in $i/*.gz ; do echo $j >> ../final.txt ; gunzip -c $j >> ../final.txt ; done ; done 

Kommentierte Version:

for i in *      # for each directory under current working directory 
    do        # have nothing else in there 
    for j in $i/*.gz    # for each gzipped file under directories 
    do 
    echo $j >> ../final.txt  # echo path/file to the final file 
    gunzip -c $j >> ../final.txt # append gunzipping the file to the final file 
    done 
done 

Ergebnis:

$ head -8 ../final.txt 
6809b1c3-75a5/bd21dc2e.txt.gz 
blabla 
whatever 
you 
have 
in 
those 
files