解凍ターゲットディレクトリの指定方法


21

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

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

回答:


18

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

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


4

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

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

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


0

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

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。そのため、抽出時にディレクトリが作成されます。

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


絶対パスは、optionを指定することでMacOSでのみ機能します-jj。他のオペレーティングシステムでは、先頭のパスを削除するオプションのみ-jがサポートされます(これ-jjはと解釈され-jます)。
scai
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.