我正在尝试使用 Homebrew 在 macOS 上安装 7zip 工具,但当我运行 时brew search 7zip
,它输出三个不同的公式,“7zip”、“7-zip”和“p7zip”。哪一个是官方的?
在我们开始之前,这是一个与6 年前几乎相同的问题,由于 7Zip 的更新,今天提供的答案似乎不太相关。
在使用 7zip 提取通过SteamCMD下载的 bin 文件时,我收到了“负载数据结束后有一些数据”的问题。
我目前使用的是 7zip 19.00,根据最初的问题,应该没问题,因为这个错误只在 16.02 或以下版本上运行。我已经升级到 22.01,但仍然面临同样的问题。
如果需要更多信息,请告诉我,我不确定如何进行。
我们需要对文件名以“@”开头的文件进行 7zip 压缩,但以下命令会失败:
7za a -tzip -- a.zip @abc.com
因为 7zip 具有“列表文件”功能(https://sevenzip.osdn.jp/chm/cmdline/syntax.htm),因此上述命令将触发 7zip 查找文件“abc.com”而不是“@” abc.com”,我们希望将其压缩。
有没有办法禁用 7zip 的这个功能?如果不是最好的方法是什么?
谢谢,
基本上,我发现p7zip首先扫描要压缩的目录,然后以单个 zip 格式压缩这些文件。
考虑以下场景,我有数百 GB 的文件和文件夹,它们首先被扫描以进行压缩。假设我在完成扫描后删除了一个文件。我不知道文件在完成扫描时如何丢失,但在生产中看到了这种行为,所以在我的本地机器上,我自己删除了它。在这种情况下,它会引发以下错误并无限期地卡住。
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,6 CPUs Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz (906EA),ASM,AES-NI)
Scanning the drive:
29741 folders, 48865 files, 5035919485 bytes (4803 MiB)
Creating archive: /home/mymachine/Downloads.zip
Items to compress: 78606
WARNING: No such file or directory
/var/webarch/data/fs-root/538/2022/05/20/19964
那么,p7zip 或 hack 中是否有任何标志可用于忽略这些警告并继续压缩?就像,我们可以忽略扫描后丢失的一些文件,而不是在生产中抛出超时错误。
好的,所以我想使用 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 档案,而打包的文件夹结构完好无损?
如果我设置LZMA2
我得到LZMA
,反之亦然!什么?
CentOS9
$ 7za a -mx=9 -mm=LZMA2 test.7z *.sh
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.utf8,Utf16=on,HugeFiles=on,64 bits,3 CPUs AMD EPYC Processor (830F10),ASM,AES-NI)
Open archive: test.7z
--
Path = test.7z
Type = 7z
Physical Size = 320
Headers Size = 178
Method = LZMA:12
$ 7za a -mx=9 -mm=LZMA test.7z *.sh
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.utf8,Utf16=on,HugeFiles=on,64 bits,3 CPUs AMD EPYC Processor (830F10),ASM,AES-NI)
Open archive: test.7z
--
Path = test.7z
Type = 7z
Physical Size = 321
Headers Size = 172
Method = LZMA2:12
我正在尝试像这样压缩文件夹结构:
Root
|_ Folder
|_Sub Folder 1
|_Files
|_Sub Folder 2
|_Files
|_ *more Sub Folders*
我需要为每个包含子文件夹中文件的子文件夹创建 .zip 文件,并且需要为子文件夹命名。因此,如果我在“文件夹”中运行命令,我会得到一个为每个子文件夹命名的 zip 文件,其中仅包含子文件夹的内容(而不是刚刚压缩的子文件夹)。
我在 Windows 上使用 7-zip 尝试了各种命令,但似乎无法得到它。
for /d %i in (*) do 7z a -oC:\Temp... %i.zip
这只是压缩整个文件夹内容并循环通过为每个子文件夹名称创建档案。
感谢您提供的任何帮助!
在我的 3D 建模圈子里,很多用户从日本或中国的创作者那里下载和提取 zip 文件。通常,我们被教导将相关区域添加到我们的计算机以确保安全的文本/文件名提取。我们中的一些人使用 Bandizip 进行提取,因为它允许在不添加区域的情况下进行外部 zip 提取,但是这也可以使用 7zip 吗?谢谢!