/dir1/dir2/フォルダにtest.tarがあり、test.tarのフォルダを/dir1/dir2/ディレクトリに抽出したいと思います。私のtest.tarの構造
test.tar
|tdirX/
|tdirY/
|tdirZ/
など。
今、私はtest.tar/tdirZを抽出せずにtdirX - tdir Y、...フォルダを/dir1/dir2/に抽出したいと思います。
注:私はSunOS 5.8を使用しています。
答え1
tar(1)
手動私のSolaris 11.4ベータシステムでは、次のように表示されます。
ファイル名の代替ワイルドカードは、アーカイブからファイルを抽出するために使用することはできません。
...次を使用することをお勧めします。
tar xvf test.tar $( tar tf test.tar | grep '^tdir[XY]' )
代わりに。これにより、dir[XY]
行の先頭に一致する行のアーカイブとgrepの内容が一覧表示されます。
実際におすすめするのは
tar xvf test.tar `tar tf test.tar | grep '^tdir[XY]'`
しかし、シェルが古すぎて理解できない限り、同じことです$(...)
。
これは少しハッキングのように感じます(たとえば、ディレクトリにスペースがあると壊れます)。この場合、以下を使用できます。
tar xvf test.tar tdirX
tar xvf test.tar tdirY
これは、現在の作業ディレクトリがあり、/dir1/dir2
アーカイブが同じディレクトリにあると仮定します。
答え2
あなたがやろうとしていることに正確に従っているかどうかはわかりません。ただし、tarballの内容を使用してファイルを作成すると便利です。つまり: tar tf test.tar > /tmp/listing_of_test-tar.txt
。必要に応じてファイルが作成される前または後にgrepまたはsedを介してパイプすることもできます。
その後、tarの-Iインクルードオプションまたは-X除外オプションを使用するために別々のファイルを作成できます。