好的,所以我想使用 7za 解压一个档案;我在 Windows 10 上的 MSYS2 的 MINGW64 shell 中。
因此,我首先打开一个新的空目录:
$ mkdir temp
$ cd temp/
让我们确定一下——这个目录真的是空的吗?
$ ls -la
total 12K
drwxr-xr-x 1 user None 0 May 20 14:23 ./
drwxr-xr-x 1 user None 0 May 20 14:23 ../
确实如此。让我们来看看我们的档案:
$ wget https://sysprogs.com/getfile/1748/openocd-20211118.7z
...
Saving to: ‘openocd-20211118.7z’
openocd-20211118.7z 100%[=================================================>] 7.97M 10.4MB/s in 0.8s
2022-05-20 14:24:32 (10.4 MB/s) - ‘openocd-20211118.7z’ saved [8359495/8359495]
很好...那么,现在 - 为了稍后将揭示的目的 - 首先让我们检查里面的档案,看看在哪里可以找到该文件ftd2xx.lib
:
$ 7za l openocd-20211118.7z | grep ftd2xx.lib
2020-07-12 18:45:55 ....A 18652 489886 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/amd64/ftd2xx.lib
2020-07-12 18:45:55 ....A 20418 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/i386/ftd2xx.lib
2020-07-12 18:45:55 ....A 1014926 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/Static/amd64/ftd2xx.lib
2020-07-12 18:45:55 ....A 904088 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/Static/i386/ftd2xx.lib
好的,因此有四个这样的文件 - 但它们都在各自的目录中;而且,看起来整个档案都“包裹”在“父”文件夹 OpenOCD-20211118-0.11.0 中 - 好吧,如果是这样的话,太好了,我可以直接解压(就像我做的那样unzip
)?
$ 7za e openocd-20211118.7z
7-Zip (a) [64] 17.04 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28
p7zip Version 17.04 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz (906E9),ASM,AES-NI)
Scanning the drive for archives:
1 file, 8359495 bytes (8164 KiB)
Extracting archive: openocd-20211118.7z
--
Path = openocd-20211118.7z
Type = 7z
Physical Size = 8359495
Headers Size = 14117
Method = LZMA2:24 BCJ
Solid = +
Blocks = 2
Would you like to replace the existing file:
Path: ./ftd2xx.lib
Size: 18652 bytes (19 KiB)
Modified: 2020-07-12 18:45:55
with the file from archive:
Path: OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/i386/ftd2xx.lib
Size: 20418 bytes (20 KiB)
Modified: 2020-07-12 18:45:55
? (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? q
Archives with Errors: 1
Break signaled
等等,什么?我为什么要找一个文件覆盖???
我从空的文件夹(之前已确认),我可以在列表中看到,所有这些文件都包裹在一个父文件夹中,然后该文件夹包含单独的文件夹...为什么会有一个文件被覆盖?
那么,现在让我们看看文件夹的内容:
$ ls
amd64/ drivers/ libdcc/ Static/ xmc1xxx/
arc/ erase_check/ lm3s/ ST-Link/ xscale/
arm/ flash/ loaders/ stm32/ xsvf_tools/
at91/ fm4/ marvell/ target/ driver.xml
at91sam7x/ fpga/ openocd/ test/ ftd2xx.h
atmel/ ft232r/ OpenOCD-20211118-0.11.0/ ti/ ftd2xx.lib
bin/ ftdi/ OpenULINK/ tools/ ftdibus.cat
board/ 'FTDI CDM v2.08.28 Certified'/ remote_bitbang/ transport/ ftdibus.inf
checksum/ gti/ rpc_examples/ watchdog/ ftdiport.cat
chip/ i386/ rtos-helpers/ WinUSB/ ftdiport.inf
contrib/ infineon/ scripts/ WinUSB_Mini/ openocd-20211118.7z
cpld/ interface/ share/ x64/
cpu/ kinetis/ spear/ x86/
debug/ kinetis_ke/ st/ xds110/
什么??!这一切是从哪里来的??
此存档的内容不是应该位于名为 的父文件夹中吗OpenOCD-20211118-0.11.0/
?为什么我在这里看到所有这些子文件夹,而不只是单个子OpenOCD-20211118-0.11.0/
文件夹?
这是怎么回事?我怎样才能解压 7z 档案,并且保持打包的文件夹结构完好无损?
答案1
您可以尝试通过以下方式执行命令:
7za x openocd-20211118.7z
x
将确保您已提取具有完整路径的文件