小编and*_*nka的帖子

osx:有选择地压缩大量文件:-@ 选项可以吗?

我需要制作一个 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 上”。我继续尝试了这个-@选项,它似乎有效;但我对它是否真的在做正确的工作感到紧张(归档所有文件,完整无缺)。

以下是我的问题:

  1. 为什么-@在 MacOS 上不行?
  2. 是否有某些版本的 MacOS/bash/zip 出现此警告,而其他版本则不然?这是一个过时的警告,如果是,分界线在哪里?
  3. 在不使用的情况下,解决此问题的可行方法是-@什么?

请注意,此处给出的解决方案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)

zip bash command-line macos

4
推荐指数
1
解决办法
1496
查看次数

标签 统计

bash ×1

command-line ×1

macos ×1

zip ×1