Linux で複数の 7zip ファイルを解凍するには、それらを連結する必要がありますか?

Linux で複数の 7zip ファイルを解凍するには、それらを連結する必要がありますか?

私は通常、Windows で複数の 7zip ファイルを解凍するときに 7zip を使用します。Linux で解凍する場合は、複数の 7zip ファイルを 1 つの zip アーカイブに連結する必要があると記載されている記事をいくつか目にしました。

  1. これは必要ですか?
  2. 複数の 7zip ファイルのうち最初のファイルを単純に指定することはできませんか?

私が質問する理由は、コマンドを実行すると7zr e {name_of_first_archive}最初のアーカイブのみが解凍されるように見えるからです。

答え1

7zの分割アーカイブを解凍/展開することができます。解凍前に部分を連結する必要はありません。唯一の要件は、アーカイブに次のタイプの増分拡張子がなければならないことです。.NNN さん(N=[0..9])から始まる.001これはおそらく、7z を使用して分割アーカイブを作成すると、アーカイブの各部分にこのように名前が付けられるためです。その後は、最初のアーカイブで次のコマンドを実行するだけです。

[me home]$ ls
diveintopython3.pdf.7z.001  diveintopython3.pdf.7z.002  diveintopython3.pdf.7z.003

[me home]$ 7zr x diveintopython3.pdf.7z.001

7-Zip (A) [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18 p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)

Processing archive: diveintopython3.pdf.7z.001

Extracting  diveintopython3.pdf

Everything is Ok

Size:       2598283 Compressed: 734003

答え2

まあ、どうやらそれはできないようです。奇妙ですが、仕方ありません。ただし、この小さなスクリプトは、必要なことを実行します (アーカイブの拡張子が .7z であると仮定します。そうでない場合は、アーカイブの拡張子に変更します)。

for n in *7z; do 7zr x $n; done

「e」フラグではなく「x」フラグを使用してください。「e」フラグはすべてのファイルを現在のディレクトリに抽出しますが、「x」フラグは元のパスを保持します。

作業を楽にするために、次の小さな関数を ~/.bashrc ファイルに追加することができます。

function multi7z () {
    for n in $@; do 7zr x $n; done
}

その後、期待どおりに複数のアーカイブを解凍できます。

$ multi7z *7z

または

$ multi7z a.7z b.7z n.7z

編集:これは複数のファイルを解凍する場合に有効です。独立したアーカイブ。1つアーカイブが多数の .7z ファイルに分割されている場合は、代わりに @don_crissti の回答を使用してください。

関連情報