好的,所以我想使用 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 档案,而打包的文件夹结构完好无损?
您可以尝试以这种方式执行命令:
x
将确保您已提取具有完整路径的文件