ワイルドカードを使用して tar アーカイブ内の特定のファイルを抽出する

ワイルドカードを使用して tar アーカイブ内の特定のファイルを抽出する

さまざまな種類のファイルを含むアーカイブから jpeg 画像のみを抽出するスクリプトを作成しようとしています。

そのために、私は以下を使用しようとしました:

   tar -xf MyTar.tar *.jpg

しかし失敗しました(*.jpgが見つかりません)そして「--wildcard」を使うように勧められました。そこで試してみました

tar -xf MyTar.tar --wildcard *.jpg

それを実行しましたが、同じエラーが発生し、オプション「--wildcard」があいまいであるという別の警告が表示されました。

tar のマニュアルページを調べましたが、問題についての手がかりは見つかりませんでした。

答え1

結局、私は休憩の後に答えを見つけました。オプションはワイルドカードですs、複数形...

そこでコマンド

tar -xf MyTar.tar --wildcards "*.jpg"

まさに私が必要としていたことをしてくれました。

答え2

このようにワイルドカードを引用符で囲むと"*.jpg"、シェルはワイルドカードを展開せずにそのまま tar に渡します。ワイルドカードを評価するのはシェルではなく tar であり、引用符がその役割を果たします。

答え3

tarの古いバージョンについては、以下から抜粋します。「man」ファイル:

ファイル名置換ワイルドカードは、アーカイブからファイルを抽出する際には使用できません。代わりに、次の形式のコマンドを使用します。

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `

関連情報