Как легко извлечь вложенные файлы tar.gz? - PullRequest
2 голосов
/ 06 мая 2010

Мне нужно извлечь tar.gz файл. Это около 950 МБ. В нем есть еще 23 файла tar.gz. Каждый из этих 23 файлов tar.gz содержит один файл tar. Мои вопросы, как я могу легко извлечь их все? Можно ли использовать инструмент командной строки?

Структура выглядит следующим образом:

foo.tar.gz
 ├───bar1.tar.gz
 │   ├───foobar1.tar
 ├───bar2.tar.gz
 │   ├───foobar2.tar
 ├───bar3.tar.gz
 │   ├───foobar3.tar
 ├───bar4.tar.gz
 │   ├───foobar4.tar
 ├───bar5.tar.gz
 │   ├───foobar5.tar
 ├───bar6.tar.gz
 │   ├───foobar6.tar
 |   ..........
 |   ..........
 |   ..........
 |   23 of them

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 15 декабря 2012

Вы можете использовать аргумент --to-command для передачи каждого извлеченного файла другой программе (в stdin).В этом случае вы передаете его другому экземпляру tar, считывающему данные из стандартного ввода.

tar --to-command='tar -xzvf -' -xzvf foo.tar.gz
4 голосов
/ 06 мая 2010

В итоге я извлек foo.tar.gz вручную и использовал следующий скрипт оболочки для извлечения этих файлов * .tar.gz.

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for next in *.tar.gz
    do
        echo "Untaring - $next"
        tar -xzf $next -C ~/foo
    done
exit 0

надеюсь, это кому-нибудь поможет.

0 голосов
/ 06 мая 2010

Да.

tar -xzOf foo.tar.gz bar1.tar.gz | tar -xO foobar1.tar

Должен сделать свое дело.

...