ファイルの内容を解凍しますが、アーカイブフォルダは作成しません。

ファイルの内容を解凍しますが、アーカイブフォルダは作成しません。

多くのディレクトリ、ファイルなどを含む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/filefilebsdtarziptar-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/

関連情報