我运行 Linux Live CD,我需要从位于磁盘驱动器上的 wim 存档中提取特定文件。我知道档案中文件的完整路径:
xubuntu@xubuntu:~$ 7z l winRE.wim | grep -i bootrec.exe
2009-08-28 15:02:29 ....A 299008 134388 Windows/System32/BootRec.exe
我的磁盘空间不足,无法解压整个存档。
如何从存档中提取该特定文件?
我尝试了该-i
选项,但没有奏效:
xubuntu@xubuntu:~$ 7z x -i Windows/System32/BootRec.exe winRE.wim
Error:
Incorrect command line
该
man 7z
页面说:您需要
!
在文件名之前明确指定,并使用单引号保护开关免受 bash 扩展:7z x '-i!Windows/System32/BootRec.exe' winRE.wim
e
(您可以通过使用函数字母来避免保留完整路径:7z e '-i!Windows/System32/BootRec.exe' winRE.wim
。)顺便说一句,如果您不
-i
使用单引号保护选项或使用双引号保护选项,则会出现错误:例如:
这个命令对我有用,我在 ubuntu server 16.04 上试过。
为我工作(您可能想使用正斜杠,见下文):(
7z e -so 'file.zip' 'file\path\file.png' > 'file.png'
从 ZIP 文件中提取的一个 PNG 文件:该命令将在当前目录中创建或覆盖任何名为“file.png”的文件。
e
:提取保留文件名但不保留文件路径。-so
:输出到标准输出。)不适合我:
为什么这些命令对我不起作用,但那一个命令对我起作用?可能是因为 ZIP 文件中文件路径中的文件夹分隔符是反斜杠,而不是正常的正斜杠。也许我应该用反斜杠 (\) 或转义的反斜杠 (\\) 运行这些命令,然后它就会起作用。
如果您在文件路径中有一个带有不鼓励反斜杠的 ZIP 文件(https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT §4.4.17.1),显然您也可以通过以下方式从中提取单个文件解压命令:
unzip -p file.zip 'path\\to\\file.png'
(来源:https ://archived.moe/g/thread/85892819#85900314 )