Linux Zipコマンドに、解凍先のターゲットディレクトリをハードコーディングできるオプションがありますか?たとえば、。/ mydirファイルをmyzipfile.Zipに圧縮したいのですが、unzipコマンドを使用して特定のディレクトリ「projx」を作成し、。/ mydirの下にあったファイルを展開します。
Zip -r myzipfile.Zip mydir (-option to expand into 'projx' when unzipped? )
そのようなオプションはありません、少なくともInfo-Zipにはありません。ディレクトリを作成する必要がありますprojx自分で、そこにファイルを移動/コピーしてから、Zip
に渡します。
ディレクトリがすでに存在する場合は、オプション-d
to unzip
は、抽出のターゲットディレクトリを指定します。
それには別の方法があります。次の方法を使用して、Zipファイルのコンテンツ全体をフラット化できます。ターゲットディレクトリは "projx"で、次のコマンドを実行します。
cd /projx && unzip -j /path/to/myzipfile.Zip
オプション-jは「ジャンクパス」と呼ばれ、ディレクトリ構造を抽出する代わりに、各ファイルを現在のディレクトリにダンプします。
特定のコマンドラインオプションについてはわかりませんが、次のコマンドを使用して目標を達成できます。
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
が作成されます。
しかし、絶対パスを保存する可能性は考えられませんが、とにかくこれは悪い考えです。