1. ホーム
  2. linux

[解決済み] 正規表現を使用すると、シェル「tar: not found in archive」エラーが発生する。

2022-03-06 12:17:52

質問

を使用する場合 tar -xzf *.gz をすべて抽出するために .gz を実行すると、カレントディレクトリにある Not found in archive というエラーが発生します。しかし、1つずつ取り出したり、以下のようなforループを使用するとうまくいきます。

for file in `ls *.gz`; do tar -xzf $file; done

このエラーの原因は何ですか?

解決方法を教えてください。

書くとき。

tar -xf *.gz

その tar コマンドで見ることができます(例)。

tar -xf abc.tar.gz def.tar.gz ghi.tar.gz

を抽出する要求と解釈される。 def.tar.gzghi.tar.gz アーカイブから abc.tar.gz . その中にファイルがないので、警告メッセージが表示されます。

つまり tar は、1つの tar ファイル(圧縮されている可能性がある)を一度に(1回の起動で)読み込むことができます。 複数のtarファイルに対する操作はできません。

なお、もし abc.tar.gz には、ファイル pqr/xyz/important.c と指定すれば、その1ファイルだけを取り出すことができます。

tar -xf abc.tar.gz pqr/xyz/important.c

あなたが使った表記は、この表記を変形させたものに過ぎません。

(そして、そうです。 tar a tar ファイルを作成します。 例えば、Gmailでは、実行可能なファイルを含むtarファイルやgzip圧縮されたtarファイルを出荷することはできません。 しかし、非圧縮のtarファイルの中にgzipされたtarファイルを埋め込むと、内側のファイルの中を見て実行可能なファイルを探すことはしない。 私は、実行ファイルを含むtarファイルを出荷する必要があるときに、これを使用します。 configure スクリプトを使用します)。