パスを知っている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.txt
。myarchive.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