非常に大きなtar.gzアーカイブから複数のディレクトリ(例えば、、、aaa
)bbb
を抽出したいと思いますccc
。
ccc
ある時もありない時もありますが、抽出過程で失敗することがないようにしたいと思います。
tarアーカイブからディレクトリの一部が存在しない場合でも、失敗せずに正確なディレクトリのリストを抽出できますか?
tar -xzf file.tar.gx --wildcards aaa bbb ccc
アーカイブに場所がない場合、コマンドは失敗します。
ベストアンサー1
pax
1つのオプションは、標準コマンドを使用してtarアーカイブを抽出し、この-'s/regexp/replacement/
オプションを使用して選択項目から不要なメンバーを削除することです。
<file.tar.gz gunzip |
pax '-s:'{aaa,bbb,ccc}':&:' \
'-s:.*::' -r
パスにaaa
、bbb
またはを含むすべてのアーカイブメンバーに対してccc
同じメンバーに置き換えるので、何もできませんが、一致するものがある場合は、次の置換をスキップし、特にs:.*::
アーカイブメンバーを削除する効果があります。
抽出する項目を確認するには-r
。フラグを削除して交換に追加して、p
どの交換が行われているかを報告できます。
pax
少なくともDebian / UbuntuのMirBSD実装は、シンボリックリンクのアーカイブメンバーがある場合、シンボリックリンクのターゲットがパターンと一致しない場合(パスが一致していても)、そのメンバーが削除されることを発見しました。バラよりhttps://austingroupbugs.net/view.php?id=1618現在、この分野のAPIを改善するための議論が進行中です。