手册页7z
简单地说
不要使用“-r”,因为这个标志不能达到您所想的效果。
我能找到的唯一文献基本上重述了同样的事情。
-r[-|0]
Recurse subdirectories (CAUTION: this flag does not do what you
think, avoid using it)
所以呢做它确实做了什么?为什么本文档的作者认为我认为它做了其他事情?
这是 Debian Squeeze 上的 7zip 9.04(相当旧)。
答案1
摘自 7-Zip 用户手册 (chm)
指定在命令行上处理通配符和文件名的方法。
答案2
直到今天我才完全明白这面旗帜7z.exe
的作用是什么-r
,并相信这是正确的答案,也是作者神秘注释背后的含义。
在我的脚本中使用时,7z.exe
我使用了-r
很多,直到我发现一个存档有一堆子文件夹(但我没有指定!)。然后我意识到,对于我在命令行中指定的一个文件,7z.exe
决定查看与我的文件所在位置相邻的所有子文件夹。虽然我没有在目标文件中指定任何文件夹,但7z.exe
决定查看所有子文件夹,并发现一些同名文件深深嵌套在其中一个文件夹中。您可以通过文本“扫描驱动器”看到它正在执行此操作,并且在执行 zip 之前会遍历所有子文件夹。解决方案是只使用-r0
- 只要您指定文件夹/文件名的任意组合和没有通配符, 它会仍然递归添加您指定的任何文件夹对象,但不再尝试扫描当前位置周围/旁边的整个文件系统。我相信这就是作者所说的“此标志不会按您的想法执行,请避免使用它”。