У меня есть архив PAX, который я хочу извлечь в текущий каталог, используя структуру каталогов в архиве. Я попробовал следующую команду:

JBSP03:/u/jsdbsp/jbsp03:cd /usr/lpp/sel/selcopy
JBSP03:/usr/lpp/sel/selcopy:pax CBL15112.pax.Z

но это извлекло все в мой корневой каталог:

/GIMPAF.XML
/GIMPAF.XSL
/S0001.CBL.PROD.CBL15112.README
/S0002.CBL.PROD.CBL15112.GIMUNZIP
/S0003.CBL.PROD.CBL15112.RIMLIB.pax.Z
/S0005.CBL.PROD.CBL15112.PGMDIR.pax.Z
/SMPHOLD
/SMPHOLD/S0004.CBL.PROD.HOLDDATA.pax.Z
/SMPPTFIN
/SMPPTFIN/S0006.CBL.PROD.CBL15112.PRODDATA.pax.Z
/SMPPTFIN/S0007.CBL.PROD.CBL15112.AZZS330.SMPMCS.pax.Z

Если я просто перечислю содержимое архива:

JBSP03:/usr/lpp/sel/selcopy:pax -f CBL15112.pax.Z
/GIMPAF.XML
/GIMPAF.XSL
/S0001.CBL.PROD.CBL15112.README
/S0002.CBL.PROD.CBL15112.GIMUNZIP
/S0003.CBL.PROD.CBL15112.RIMLIB.pax.Z
/S0005.CBL.PROD.CBL15112.PGMDIR.pax.Z

Я вижу, что каждый файл указан как находящийся в корневом каталоге. Это мешает мне распаковать в каталог по моему выбору?

1 ответ1

0

Хорошо - я думаю, что начальные / все имена файлов указывают, что они были архивированы с абсолютным путем, а не с относительным путем. Поэтому по умолчанию Pax извлекает их по одному и тому же пути, то есть к корню. Похоже, у Pax просто нет опции «извлечь в указанную директорию», поэтому мне придется использовать опцию -s, чтобы изменить имя файла, извлекаемое на лету. В этом случае я бы хотел изменить ведущий '/' на '/ usr / lpp / sel / selcopy', возможно, с

-s [^/[/usr/lpp/sel/selcopy/[

Используя тот факт, что pax позволяет использовать разделители, отличные от '/', чтобы упростить выражение. Это также работает, когда просто перечисляется содержимое архива, так что вы можете проверить свою замену, прежде чем делать это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .