ファイルの解凍(アーカイブにある場合)

ファイルの解凍(アーカイブにある場合)

非常に大きなtar.gzアーカイブから複数のディレクトリ(例えば、、、aaabbbを抽出したいと思いますccccccある時もありない時もありますが、抽出過程で失敗することがないようにしたいと思います。

tarアーカイブからディレクトリの一部が存在しない場合でも、失敗せずに正確なディレクトリのリストを抽出できますか?

tar -xzf file.tar.gx --wildcards aaa bbb cccアーカイブに場所がない場合、コマンドは失敗します。

ベストアンサー1

pax1つのオプションは、標準コマンドを使用してtarアーカイブを抽出し、この-'s/regexp/replacement/オプションを使用して選択項目から不要なメンバーを削除することです。

<file.tar.gz gunzip |
  pax '-s:'{aaa,bbb,ccc}':&:' \
      '-s:.*::' -r

パスにaaabbbまたはを含むすべてのアーカイブメンバーに対してccc同じメンバーに置き換えるので、何もできませんが、一致するものがある場合は、次の置換をスキップし、特にs:.*::アーカイブメンバーを削除する効果があります。

抽出する項目を確認するには-r。フラグを削除して交換に追加して、pどの交換が行われているかを報告できます。

pax少なくともDebian / UbuntuのMirBSD実装は、シンボリックリンクのアーカイブメンバーがある場合、シンボリックリンクのターゲットがパターンと一致しない場合(パスが一致していても)、そのメンバーが削除されることを発見しました。バラよりhttps://austingroupbugs.net/view.php?id=1618現在、この分野のAPIを改善するための議論が進行中です。

おすすめ記事