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