2016-07-29 212 views
-1

我有300個目錄/文件夾,每個目錄有兩列單個文件(xxx.gz),我想合併所有文件夾中的所有文件在一個文件中。在所有文件中,第一列是相同的標識符(ID)。如何從多個目錄/文件夾合併多個文件

如何將所有文件合併爲單個文件?

而且我想將每列的標題作爲相應目錄中文件的名稱。

目錄名稱是:(68a7eb0a-123,b5694957-764等)和文件名是:(a5c403c2,292c4a2f等), 目錄名稱和各自的文件名不一樣,我想把文件名稱作爲頭。

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

each directory contain single file: 

cd 6809b1c3-75a5 

ls bd21dc2e.txt.gz 
+1

請出示一個例子目錄結構和文件內容和預期的最終文件。 –

+1

[閱讀所有文件](http://stackoverflow.com/questions/11433432/importing-multiple-csv-files-into-r)然後[在列表中合併多個data.frames](http:// stackoverflow的.com /問題/ 8091303 /同時合併多數據幀-IN-A-列表)。此解決方案應該根據文件大小和內存而工作。 – zx8754

+0

@mona請使用[「編輯」](http://stackoverflow.com/posts/38660539/edit)以更多信息更新您的文章。 – zx8754

回答

0

試試這個:

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

註釋版本:

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 

結果:

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