使いやすい:

使いやすい:

パスを知っているZIPファイルから単一のファイルを抽出する必要があります。次のようなコマンドがありますか?

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

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

答え1

次のオプションを使用すると、テキストのみを標準出力に抽出できます-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 .

またはヒューズジッパー:

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

答え2

unzip -j "myarchive.zip" "in/archive/file.txt" -d "/path/to/unzip/to"

ファイル名だけでなく、圧縮ファイルのフルパスを入力してください。 zipファイルの構造を維持する必要があります。

その後、個々のファイルがfile.txtmyarchive.zip/path/to/unzip/to/file.txt


-j:ジャンクパス。アーカイブのディレクトリ構造は再生成されません。すべてのファイルは解凍されたディレクトリに配置されます(デフォルトは現在のディレクトリ)。

-d:ファイルを抽出するオプションのディレクトリです。

https://www.mankier.com/1/unzip


複数のファイル:

unzip -j myarchive.zip in/archive/file.txt another/file.ext -d /path/to/unzip/to

フルサブディレクトリ

unzip -j archive.zip "sub/dir/*" -d "dest/dir"

答え3

より簡単なバージョン:

unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE

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

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

unzip -l ARCHIVE_NAME

答え4

使いやすい:

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

関連情報