Linux

使用 7-Zip 從存檔中提取特定文件

  • March 4, 2022

我執行 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頁面說:

  -i[r[-|0]]{@listfile|!wildcard}
         Include filenames

您需要!在文件名之前明確指定,並使用單引號保護開關免受 bash 擴展:7z x '-i!Windows/System32/BootRec.exe' winRE.wim

xubuntu@xubuntu:~$ 7z x '-i!Windows/System32/BootRec.exe' winRE.wim

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: winRE.wim

Extracting  Windows/System32/BootRec.exe

Everything is Ok

Size:       299008
Compressed: 227817568

e(您可以通過使用函式字母來避免保留完整路徑: 7z e '-i!Windows/System32/BootRec.exe' winRE.wim。)

順便說一句,如果您不-i使用單引號保護選項或使用雙引號保護選項,則會出現錯誤:

xubuntu@xubuntu:~$ 7z x "-i!Windows/System32/BootRec.exe" winRE.wim 
bash: !Windows/System32/BootRec.exe: event not found

引用自:https://unix.stackexchange.com/questions/460615