web-dev-qa-db-ja.com

解凍先ディレクトリの指定方法

Linux Zipコマンドに、解凍先のターゲットディレクトリをハードコーディングできるオプションがありますか?たとえば、。/ mydirファイルをmyzipfile.Zipに圧縮したいのですが、unzipコマンドを使用して特定のディレクトリ「projx」を作成し、。/ mydirの下にあったファイルを展開します。

Zip -r myzipfile.Zip mydir (-option to expand into 'projx' when unzipped? )
21
seedhom

そのようなオプションはありません、少なくともInfo-Zipにはありません。ディレクトリを作成する必要がありますprojx自分で、そこにファイルを移動/コピーしてから、Zipに渡します。

ディレクトリがすでに存在する場合は、オプション-d to unzipは、抽出のターゲットディレクトリを指定します。

18
scai

それには別の方法があります。次の方法を使用して、Zipファイルのコンテンツ全体をフラット化できます。ターゲットディレクトリは "projx"で、次のコマンドを実行します。

cd /projx && unzip -j /path/to/myzipfile.Zip

オプション-jは「ジャンクパス」と呼ばれ、ディレクトリ構造を抽出する代わりに、各ファイルを現在のディレクトリにダンプします。

4

特定のコマンドラインオプションについてはわかりませんが、次のコマンドを使用して目標を達成できます。

ln -s mydir projx
Zip -r myzipfile.Zip projx
rm projx

最初のコマンドはシンボリックリンクを作成するので、mydirを介してprojx内のファイルにアクセスすることもできます。次に、Info-Zip(バージョン2.31でテスト済み)を使用して、シンボリックリンクが逆参照され(-yを指定しない限り、これがデフォルトです)、ファイルは再帰的に保存されます。

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

ご覧のとおり、フォルダ名もファイルに保存されています。そのため、抽出時にディレクトリprojxが作成されます。

しかし、絶対パスを保存する可能性は考えられませんが、とにかくこれは悪い考えです。

0
mpy