我需要从我知道路径的 ZIP 文件中提取一个文件。有没有类似下面的命令:
unzip -d . myarchive.zip path/to/zipped/file.txt
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的命令提取并重新创建了文件的整个路径./path/to/zipped/file.txt。有没有办法让我简单地将文件拉到指定的目录中?
sMy*_*les 188
unzip -j "myarchive.zip" "in/archive/file.txt" -d "/path/to/unzip/to"
Run Code Online (Sandbox Code Playgroud)
输入压缩文件的完整路径,而不仅仅是文件名。确保保持从 zip 文件中看到的结构。
这将提取单个文件file.txt中myarchive.zip到/path/to/unzip/to/file.txt。
Gil*_*il' 185
您可以使用以下-p选项仅将文本提取到标准输出:
unzip -p myarchive.zip path/to/zipped/file.txt >file.txt
Run Code Online (Sandbox Code Playgroud)
这不会提取元数据(日期、权限等),仅提取文件内容(显然,它仅适用于常规文件,不适用于符号链接、设备、目录……)。这是为以后不必移动文件的便利而付出的代价。
或者,将存档挂载为目录并仅复制文件。使用AVFS:
mountavfs
cp -p ~/.avfs"$PWD/myarchive.zip#"/path/to/zipped/file.txt .
Run Code Online (Sandbox Code Playgroud)
或者使用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
Run Code Online (Sandbox Code Playgroud)
小智 34
更简单的版本:
unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE
Run Code Online (Sandbox Code Playgroud)
这将PATH_OF_FILE_INSIDE_ARCHIVE在当前目录中重新创建,但只提取指定的文件。
要列出 Zip 存档中的所有文件:
unzip -l ARCHIVE_NAME
Run Code Online (Sandbox Code Playgroud)
Cam*_*mer 10
在 macOS 上,默认使用Info-Zip
首先列出文件以找到您想要的
unzip -l my.zip
Run Code Online (Sandbox Code Playgroud)
然后从存档中提取文件
unzip my.zip annoying/path/to/file/in/zip
Run Code Online (Sandbox Code Playgroud)
与 -p 结合用于标准输出
unzip -p my.zip annoying/path/to/file/in/zip >./file
Run Code Online (Sandbox Code Playgroud)
或 -j 用于解压到当前目录(丢弃垃圾路径)
unzip -j my.zip annoying/path/to/file/in/zip
Run Code Online (Sandbox Code Playgroud)
使用 -d 可以指定创建任意目录
unzip -d /path/to/dir my.zip annoying/path/to/file/in/zip
Run Code Online (Sandbox Code Playgroud)
如果您想要-d目录中的文件,您可能希望将它与-j选项结合起来。
小智 5
unzip zipfile.zip path/inside/zip/file.txt
Run Code Online (Sandbox Code Playgroud)
它会膨胀文件。
$ 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
Run Code Online (Sandbox Code Playgroud)