Распечатать содержимое каждого файла в tar-архиве

2 ответа

Думаю, это сработает:

tar --wildcards --to-stdout -xvf archive.tar.gz './*'

Обратите внимание, что могут быть проблемы с частью './*':. Я не уверен, как именно tar сопоставляет пути. Очевидно, что если у вас есть абсолютный путь в архиве, это не совпадет, но, опять же, я не уверен, что просто '*'— лучший вариант.

Я полагаю, что некоторые реализации tar также будут принимать -Oвместо --to-stdout. Я не уверен, является ли --wildcardsисключительной реализацией GNU.


Вот версия, в которой не используется--wildcards

tar -xOvf archive.tar.gz $(tar -tf archive.tar.gz)
1
28.01.2020, 02:33

Помимо использования GNU tarс -Oили --to-stdout, нет хорошего способа сделать это каким-либо переносимым способом:

$ tar -tvzf dates.tgz
-rw-r--r-- kk/wheel         30 2017-09-25 08:41 a
-rw-r--r-- kk/wheel         30 2017-09-25 08:41 b

$ tar -Ov -xzf dates.tgz
a
Mon Sep 25 08:41:51 CEST 2017
b
Mon Sep 25 08:41:53 CEST 2017

Реализация BSD tar(на OpenBSD )не поддерживает флаг -O, и стандартный архиватор paxтакже не может извлекать файлы в стандартный вывод.

1
28.01.2020, 02:33

Теги

Похожие вопросы