如何合并多个目录/文件夹中的多个文件

时间:2016-07-29 13:47:56

标签: r unix awk

我有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 个答案:

答案 0 :(得分: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
相关问题