web-dev-qa-db-ja.com

zipアーカイブから特定のディレクトリに特定のファイルのみを抽出します

パスがわかっているZipファイルから1つのファイルを抽出する必要があります。次のようなコマンドはありますか:

unzip -d . myarchive.Zip path/to/zipped/file.txt

残念ながら、上記のコマンドは、./path/to/zipped/file.txtにあるファイルへのパス全体を抽出して再作成します。指定したディレクトリにファイルを単に取り出す方法はありますか?

168
Naftuli Kay

-pオプションを使用して、テキストのみを標準出力に抽出できます。

unzip -p myarchive.Zip path/to/zipped/file.txt >file.txt

これはメタデータ(日付、権限など)を抽出せず、ファイルの内容のみを抽出します。それは、後でファイルを移動する必要がないという便宜のために支払う代償です。

または、アーカイブをディレクトリとしてマウントし、ファイルをコピーします。 [〜#〜] avfs [〜#〜] の場合:

mountavfs
cp -p ~/.avfs"$PWD/myarchive.Zip#"/path/to/zipped/file.txt .

または Fuse-Zip を使用:

mkdir myarchive.d
Fuse-Zip myarchive.Zip myarchive.d
cp -p myarchive.d/path/to/zipped/file.txt .
fusermount -u myarchive.d; rmdir myarchive.d
unzip -j "myarchive.Zip" "in/archive/file.txt" -d "/path/to/unzip/to"

ファイル名だけでなく、圧縮ファイルの完全パスを入力します。 Zipファイル内から見た構造を維持してください。

これは単一のファイルを抽出しますfile.txtmyarchive.Zip/path/to/unzip/to/file.txt

169
sMyles

シンプルなバージョン:

unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE

これにより、現在のディレクトリにPATH_OF_FILE_INSIDE_ARCHIVEが再作成されますが、指定されたファイルのみが抽出されます。

Zipアーカイブ内のすべてのファイルを一覧表示するには:

unzip -l ARCHIVE_NAME
25
Taukir

macOSでは、デフォルトで Info-Zip を使用します

最初にファイルをリストアップして、必要なものを見つけます

unzip -l my.Zip

次に、アーカイブから抽出するファイルのリストを提供します

unzip my.Zip annoying/path/to/file

Stdoutの場合は-pと組み合わせる

unzip -p my.Zip annoying/path/to/file >./file

簡単な使い方:

unzip zipfile.Zip path/inside/Zip/file.txt

ファイルを膨張させます。

$ unzip -l ./../html.Zip | grep wp-config

     3328  07-22-2019 15:10   html/wp-config.php

     2898  01-07-2019 23:30   html/wp-config-sample.php

$ unzip ./../html.Zip html/wp-config.php

     Archive:  ./../html.Zip
     inflating: html/wp-config.php

$ ls -lrth

     total 4.0K
     drwxr-sr-x 2 Apache apache 4.0K Jul 26 14:41 html

$ ls -lrth html/*

     total 4.0K
     -rw-rw-rw- 1 Apache apache 3.3K Jul 22 15:10 wp-config.php

相対ディレクトリに抽出

unzip -j -d relativedir archive.Zip path/in/archive/file.ext

現在のディレクトリに抽出

unzip -j -d . archive.Zip path/in/archive/file.ext

絶対ディレクトリに抽出

unzip -j -d /absolutedir archive.Zip path/in/archive/file.ext
0
Gapmeister66