2016-07-29 2 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), затем [слияние нескольких файлов данных в списке] (http: // stackoverflow .com/вопросы/8091303/одновременно слияние и множество данных-кадры-в-список). Это решение должно работать в зависимости от размеров файлов и памяти. – zx8754

+0

@mona, пожалуйста, обновите свой пост дополнительной информацией, используя ["edit"] (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 
Смежные вопросы