PAX アーカイブから現在のディレクトリに抽出する方法は?

PAX アーカイブから現在のディレクトリに抽出する方法は?

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

わかりました。すべてのファイル名の先頭の / は、相対パスではなく絶対パスでアーカイブされたことを示していると思います。したがって、Pax はデフォルトで、それらをまったく同じパス、つまりルートに抽出します。Pax には単純に「指定されたディレクトリに抽出」するオプションがないようですので、抽出するファイル名をその場で変更するには -s オプションを使用する必要があります。この場合、先頭の '/' を '/usr/lpp/sel/selcopy' に変更します。おそらく次のようにします。

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

pax では '/' 以外の区切り文字が使用できるという利点を利用して、式を簡略化します。これは、アーカイブの内容を一覧表示する場合にも機能するため、実際に実行する前に置換をテストできます。

関連情報