多くのディレクトリ、ファイルなどを含むmyarchive.zipファイルがあります。この myarchive.zip ファイルが「b」というディレクトリにあるとします。 「unzip myarchive.zip」コマンドを使用すると、デフォルトではシステムはzipファイルの内容を含む「myarchive」というディレクトリを作成します。はいいいえシステムはこの「myarchive」ディレクトリを作成したいと思います。 "b"ディレクトリに内容を抽出したいと思います。可能ですか?
今私がすることは、「cp」コマンドを実行して、新しく作成されたディレクトリ(この場合は「myarchive」から「b」へ)から目的の場所にファイルをコピーすることです。
答え1
私のバージョンにはディレクトリを生成しないオプションがunzip
あります。-j
だから
unzip -j /path/to/file.zip
ファイルに保存されているディレクトリ構造を復元せずに、すべてのファイルが現在のディレクトリに抽出されますzip
。
アーカイブから1つのレベルのディレクトリのみを削除する場合(代わりmyarchive/dir/file
に抽出)(ファイルに加えてファイルをサポート)、およびそのオプションを使用できます。dir/file
file
bsdtar
zip
tar
-s
bsdtar -xf /path/to/file.zip -s'|[^/]*/||'
答え2
本当に簡単に見えます。bsdtar:
bsdtar --strip-components=1 -xvf file.zip
答え3
あなたの質問で述べたように、許可された答えはこれを行う方法を指定しません。 zipファイルに保存されているフォルダパスを使用せずに特定のフォルダに抽出したい場合は、次のようにオプションで-j
オプションを使用できます-d
。
unzip -j /path/to/file.zip -d other_folder
またはあなたの状況に合わせて
unzip -j myarchive.zip -d b
答え4
b
すでにそのディレクトリにあるとします。
tar zxvf myarchive.zip --strip-components=1
それ以外の場合:
tar zxvf b/myarchive.zip --strip-components=1 -C b/