我需要制作一个 zip 文件,从包含 ~500k 文件的目录中归档 ~100k 文件。当我尝试明显的命令时,我收到“参数列表太长”错误:
zip archive.zip *pattern*.txt # fails
zip archive.zip `find . -name "*pattern*.txt"` # fails
Run Code Online (Sandbox Code Playgroud)
一种方法是使用-@选项通过标准输入提供文件列表:
find . -name "*pattern*.txt" | zip -@ archive.zip
Run Code Online (Sandbox Code Playgroud)
但是,zip手册页说:
如果文件列表指定为 -@ [Not on MacOS],则 zip 从标准输入而不是从命令行获取输入文件列表。
困扰我的是“不在 MacOS 上”。我继续尝试了这个-@选项,它似乎有效;但我对它是否真的在做正确的工作感到紧张(归档所有文件,完整无缺)。
以下是我的问题:
-@在 MacOS 上不行?-@什么?请注意,此处给出的解决方案zip: Argument list too long (80.000 files in total)将不起作用;我需要归档目录中的一些文件,而不是全部。
我正在运行 Mac OS 10.7.5。这是一些版本信息:
$ bash --version
GNU bash, version 3.2.48(1)-release …Run Code Online (Sandbox Code Playgroud)