2013-05-23 3 views
15

Powiedzmy, że mam 3 pliki: 1.txt, 2.txt i 3.txt, które zostały zgrupowane. Jestem świadomy, że gzip pozwala wielu plików mają być łączone za pomocą kota:Czy można połączyć wiele plików .gz w taki sposób, że rozpakowują się do jednego pliku?

cat 1.gz 2.gz 3.gz > 123.gz 

Jednak gdy 123.gz jest pobierany będzie produkować oryginalne 3 pliki.

Czy można połączyć trzy archiwa w taki sposób, że poszczególne pliki w archiwum zostaną połączone w jeden plik?

+0

Tradycyjnym sposobem uniksowym jest ich atakowanie. AFAIK [xz] (http://tukaani.org/xz/) może robić, co chcesz, ale te nie są zipami. – djf

+1

Kiedy 123.gz jest wyodrębniane przez co? gunzip _will_ wyodrębnij to do pojedynczego pliku o nazwie 123. –

Odpowiedz

20

Co zaskakujące, jest to rzeczywiście możliwe.

: : wiele skompresowanych plików można połączyć. W takim przypadku gunzip wyodrębni wszystkie elementy naraz.

Przykład:

można zbudować zamek tak:

echo 1 > 1.txt ; echo 2 > 2.txt; echo 3 > 3.txt; 
gzip 1.txt; gzip 2.txt; gzip 3.txt; 
cat 1.txt.gz 2.txt.gz 3.txt.gz > all.gz 

Następnie rozpakuj go:

gunzip -c all.gz > all.txt 

Zawartość all.txt powinien być:

1 
2 
3 

który jest taki sam jak:

cat 1.txt 2.txt 3.txt 

oraz - jak prosiłeś - „gunzip wyodrębni wszystkie elementy naraz”.

4

Aby złączyć wiele plików, spróbuj:

gzip -c 1.txt > 123.gz 
gzip -c 2.txt >> 123.gz 
gzip -c 3.txt >> 123.gz 

Następnie gzip -dc 123.gz byłoby równoważne cat 1.txt 2.txt 3.txt.

+0

Dzięki, to nie działa w moim przypadku, ponieważ każde archiwum jest napisane przez inny reduktor w pracy Hadoop. – slayton

Powiązane problemy