如何禁用 7-Zip 目录扫描对不打算压缩和添加到存档的目录?

Lyu*_*riv 9 command-line 7-zip

7-Zip 是一个很棒的工具,但有时它的工作方式很奇怪。考虑以下目录D:\dir布局:

foo   <DIR>
bar   <DIR>
baz   <DIR>
empty <DIR> -- this directory is empty by intention
Run Code Online (Sandbox Code Playgroud)

现在执行以下命令时:

>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
Run Code Online (Sandbox Code Playgroud)

出于某种原因,7-Zip 会扫描与压缩过程无关的目录。这与 7-Zip [64] 16.04 相关,但它在更旧的版本中的工作方式类似。不确定它是否也可以在 Linux 上重现。

如何禁用扫描并使 7-Zip 仅递归分析指定目录?


编辑

7-Zip 的创建者 Igor Pavlov 向我解释了如何7z处理这种情况。

Lyu*_*riv 10

我在官方 7-Zip 论坛上问了同样的问题,并得到了 Igor Pavlov 的答复。我想从网站上的 Igor 那里得到答案,但他似乎没有这里的帐户。他建议只删除-r开关,因为7z默认情况下使用递归搜索:

您的命令在所有子文件夹中搜索空文件或文件夹。
取下-r开关。

http://7-zip.org/faq.html

以下是官方常见问题解答的相应摘录:

为什么 -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 文件。

  • 这仍然很令人困惑。我希望有一天 Igor 决定删除/重命名/修复 -r 开关。 (2认同)