圧縮アーカイブから特定のフォルダの内容のみを指定されたディレクトリに抽出する

圧縮アーカイブから特定のフォルダの内容のみを指定されたディレクトリに抽出する

これはSOに非常に近い圧縮アーカイブから特定のフォルダーのみを指定されたディレクトリに抽出するにはどうすればよいですか? 近いものが必要なのですが、内容のみではなく、内容を含むフォルダーが常に取得されます。提案されたのは次のとおりです。

 #note $2 is passed in and would be == "magefoler"
 unzip /srv/file.zip "$2-master/*" -d /srv/www/mage/

この構造を持つzipを取得するには何をする必要がありますか

file.zip
 |-magefoler-master/
 |-magefoler-master/app/*tons of files
 |-magefoler-master/skin/*tons of files

を別のフォルダに移動する必要がありますが、 を移動することはできません。とフォルダmagefolerのみ移動したいのです。これは、常にこれら 2 つのフォルダであるという意味ではなく、 内の子コンテンツ、ファイル、またはフォルダを取得する必要があるというだけです。すべてをフォルダにエクスポートし、そこから移動するという操作は避けたいものです。appskinmagefoler

私が求めている最終結果は、/mage次のようなフォルダーに出力した zip ファイルから得られます。

/srv/www/mage/
     |--/mage/app/*tons of files
     |--/mage/skin/*tons of files

答え1

ここに解凍するだけではだめですか:

$ unzip /srv/file.zip "$2-master/*" -d /srv/www/

次に、フォルダmagefoler-masterを次の場所に移動/名前変更しますmage:

$ mv /srv/www/magefoler-master /srv/www/mage

代替案は?

過去にこの問題を調査したとき、 を使用せずに同様のことを実行できる追加の方法は 2 つしか見つかりませんでしたmv

  1. ここで Gilles が提案しているように FUSE を使用します。解凍時に unzip / zip でサブディレクトリを作成しないようにするにはどうすればよいですか?
  2. ツールを使用してzipnote、ZIP アーカイブ内のファイルを抽出前に移動させます。

関連情報