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
开关。
以下是官方常见问题解答的相应摘录:
为什么 -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 文件。