7-Zip 是一款很棒的工具,但有时它的工作方式很奇怪。请考虑以下目录D:\dir
布局:
foo <DIR>
bar <DIR>
baz <DIR>
empty <DIR> -- this directory is empty by intention
现在执行以下命令时:
>D:
>cd D:\dir
>7z a -r -bb3 -mx9 -mmt -ms empty.7z empty
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning the drive:
0M Scan foo\bar\baz
由于某种原因,7-Zip 会扫描与压缩过程无关的目录。这与 7-Zip [64] 16.04 有关,但在更早的版本中也是如此。不确定在 Linux 上是否也能重现。
如何禁用扫描并让 7-Zip 仅递归分析指定的目录?
编辑
7-Zip 的创建者 Igor Pavlov 向我解释了7z
这种情况下的工作原理。
答案1
我问的是同样的问题在官方 7-Zip 论坛上,得到了 Igor Pavlov 的回复。我想从网站上的 Igor 那里得到答案,但他似乎没有这里的账户。他建议删除开关-r
,因为7z
默认情况下使用递归搜索:
您的命令在所有子文件夹中搜索空文件或文件夹。
删除-r
开关。
以下是官方常见问题解答的摘录:
为什么 -r 开关不能按预期工作?
在大多数情况下,您不需要 -r 开关。即使没有 -r 开关,7-Zip 也可以压缩子文件夹。
示例 1:
7z.exe a c:\a.7z "C:\Program Files"
完全压缩“C:\Program Files”,包括所有子文件夹。示例 2:
7z.exe a -r c:\a.7z "C:\Program Files"
在 C:\ 的所有子文件夹中搜索并压缩“Program Files”(例如,在“C:\WINDOWS”中)。如果您只需要压缩具有某些扩展名的文件,则可以使用 -r 开关:
7z a -r c:\a.zip c:\dir\*.txt
压缩文件夹 c:\dir\ 及其所有子文件夹中的所有 *.txt 文件。