it-swarm.cn

从压缩的存档中仅将特定文件提取到给定目录

我需要从我知道路径的Zip文件中提取单个文件。是否有如下命令:

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
144
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

与-p结合使用以进行标准输出

unzip -p my.Zip annoying/path/to/file >./file
4
Cameron Lowell Palmer

使用简单:

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
2

提取到相对目录

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