Извлеките 1 файл из tar.gz с помощью bash - PullRequest
13 голосов
/ 12 августа 2010

Можно ли программным способом извлечь отдельный файл из файла .tar.gz приличного размера без извлечения всего архива на диск?По сути, мне нужно получить внутри сети большие файлы tar.gz и извлечь 1 небольшой текстовый файл.Кажется несколько чрезмерным, чтобы вытащить и распаковать архив на диск, затем вытащить файл, а затем удалить все остальное.Также я собираюсь делать это рекурсивно (например, зависимости пакетов, каждый текстовый файл указывает на большее количество tar.gz), поэтому, чем меньше сетевого трафика и циклов ЦП мне удастся избежать, тем лучше.

Ответы [ 2 ]

21 голосов
/ 12 августа 2010

Со страницы man, чтобы извлечь blah.txt из foo.tar.gz:

tar -xzf foo.tar.gz blah.txt

(И это, конечно, относится к суперпользователю, но эй, быстрые ответы тоже хороши)1004 *

4 голосов
/ 12 августа 2010

Я повторяю ответ Джефроми с добавлением пути к файлу, если у вас есть каталоги в файле tar (для некоторых это может показаться очевидным, но мне изначально не было ясно, как задать структуру каталогов) ,

Например, если вы сделали tar в каталоге src /, а файл blah.txt находился в release1 / shared /, вы вернетесь в каталог src / (если вы хотите, чтобы он не подвергался обработке в том же месте)

tar -xzf tar.gz release1/shared/blah.txt

Если вы не помните структуру каталогов вашего tar-файла (я немного дезорганизован и иногда забываю, где я делал tar), вы всегда можете

tar -tzf tar.gz

чтобы увидеть содержимое, отмените (Ctrl + C), как только вы получите представление о структуре каталогов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...