Команда tar - как извлечь один файл в определенный каталог

10719
ring bearer

Есть ли способ извлечь один файл из файла tar в определенный каталог? На самом деле, я имею дело с .tgzфайлом, поэтому я пытаюсь что-то вроде этого:

gunzip -c mytargzfile.tgz | tar xvf - path/to/myfile -C /tmp

Для того, чтобы извлечь запись файла с именем path/to/myfileв mytargzfile.tgzк /tmpдиректории.

Но эта команда не выполняется, так как tar жалуется, что не может найти файл с именем -Cи /tmpв архиве. Я пробовал переключать -Cопцию раньше, xvfи это тоже не помогло.

Обратите внимание, что я использую AIX и KSH

2
ты не можешь просто использовать файл -z на tar и пропустить шаг gunzip? -z указывает tar обрабатывать его как сжатый архив. Таким образом, у вас будет `tar -xzvf mytargzfile.tgz -T путь / к / myfile / tmp` peelman 14 лет назад 0
версия tar, которая входит в стандартную комплектацию AIX, не имеет опции -z. ring bearer 14 лет назад 0

2 ответа на вопрос

1
RedGrittyBrick

Я думаю, что опция C для tar должна появляться раньше в команде

tar -cvf - -C /tmp path/to.myfile 

Я полагаю, что вы можете скачать, скомпилировать и установить GNU tar в ваш ~ / bin, что может немного облегчить задачу.

Кроме того, вам нужно использовать `-c`, чтобы использовать стандартные параметры режима. С `c` командная строка анализируется в режиме BSD, который не поддерживает` -C`. Gilles 14 лет назад 0
1
Karl Bielefeldt

Эта команда работает для меня хорошо, как вы сказали, что вы пытались с -Cпервым: tar -C /tmp -xvf. Может быть, это ошибка в вашей версии tar?

Немного неуклюже, но всегда есть

cd /tmp gunzip -c /path/to/mytargzfile.tgz | tar xvf - path/to/myfile 

Я рекомендую установить GNU tar для себя. Это стоит только для опций -jи -z, если не сказать больше, и это одна из первых вещей, которые я всегда делаю в новой учетной записи Unix.

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