从 OS X 终端压缩文件?

Wil*_*sch 116 compression unix zip macos

在 Finder 中,右键单击文件或目录,从下拉列表中选择压缩,最后得到一个压缩文件。

是否可以从终端做同样的事情?

slh*_*hck 142

它被称为zip

这会将文件添加file到存档中file.zip

zip file.zip file
Run Code Online (Sandbox Code Playgroud)

当然,要添加更多文件,只需将它们作为参数添加到命令中即可。查看man zip更多选项。

通常,您会希望跳过包含那些讨厌的.DS_Store文件,例如将整个文件夹压缩folderfolder.zip

zip -vr folder.zip folder/ -x "*.DS_Store"
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用 -X 来排除所有烦人的 Mac OS 隐藏文件,而不仅仅是 DS_Store。 (3认同)

qqb*_*enq 35

完全按照 Finder 命令压缩文件的方式压缩文件,请使用:

ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
Run Code Online (Sandbox Code Playgroud)

详情请参阅man ditto

 The command:
       ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
 will create a PKZip archive similarly to the Finder's Compress function-
 ality.
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案,因为它生成相同的 zip,而 CLI zip 或 tar 不同且略小。具有相同答案的类似问题:http://stackoverflow.com/questions/10738505/mac-os-x-compress-option-vs-command-line-zip-why-do-they-produce-different-re (4认同)

小智 14

考虑到上述答案,如果要使用命令压缩目录文件夹zip

zip directory.zip directory -r
Run Code Online (Sandbox Code Playgroud)

-r key 将在文件夹和子文件夹中递归迭代!

  • 这应该是正确的答案 (3认同)
  • 谢谢。这就是我正在寻找的 (2认同)

Яро*_*лин 8

tar(1)和 gzip(或 bzip2 或 lzma)。tar 用于将多个文件滚动到一个存档中,而其他三个中的一个用于压缩它。

在命令行上,您将使用几个选项调用 tar 来创建存档并对其进行 gzip。

例如:

tar -c -z -f myarchive.tar.gz -C /home/username Downloads
Run Code Online (Sandbox Code Playgroud)

这威尔· -c reate AG -z ipped存档命名-f从ILE -C焊割文件夹到目录将包含在文件夹中下载的所有文件。-C 选项是可选的,如果省略,源文件参数将从当前文件夹中获取。

供参考: tar教程