我正在尝试创建一个包含 5 个 PDF 和一个附加 ZIP 文件(位于当前工作文件夹上方的文件夹中)的 ZIP 存档。这似乎有效,但仅在一定程度上有效。
例如:
$ ls -lh
total 5.0M
-rw-r--r-- 1 root root 227K Apr 8 18:53 activity.pdf
-rw-r--r-- 1 root root 2.2M Apr 8 18:53 activity1.pdf
-rw-r--r-- 1 root root 279K Apr 8 18:53 activity2.pdf
-rw-r--r-- 1 root root 761K Apr 8 18:53 activity3.pdf
-rw-r--r-- 1 root root 1.6M Apr 8 18:53 activity4.pdf
$ ls -lh ..
total 11M
-rw-r--r-- 1 root root 11M Apr 5 12:16 Another_Archive.zip
要压缩前一个文件夹中存在的 5 个 PDF 文件和ZIP,我正在执行以下操作:
$ zip Final_Archive.zip *.pdf ../Another_Archive.zip
adding: activity.pdf (deflated 12%)
adding: activity1.pdf (deflated 10%)
adding: activity2.pdf (deflated 11%)
adding: activity3.pdf (deflated 9%)
adding: activity4.pdf (deflated 11%)
adding: ../Another_Archive.zip (stored 0%)
现在,每当我unzip
从 CLI 运行时,我都可以正确看到所有内容:
$ unzip Final_Archive.zip
Archive: Final_Archive.zip
inflating: activity.pdf
inflating: activity1.pdf
inflating: activity2.pdf
inflating: activity3.pdf
inflating: activity4.pdf
warning: skipped "../" path component(s) in ../Another_Archive.zip
extracting: Another_Archive.zip
$ ls -lh
total 31M
-rw-r--r-- 1 root root 11M Apr 5 12:16 Another_Archive.zip
-rw-r--r-- 1 root root 15M Apr 8 19:02 Final_Archive.zip
-rw-r--r-- 1 root root 227K Apr 8 18:53 activity.pdf
-rw-r--r-- 1 root root 2.2M Apr 8 18:53 activity1.pdf
-rw-r--r-- 1 root root 279K Apr 8 18:53 activity2.pdf
-rw-r--r-- 1 root root 761K Apr 8 18:53 activity3.pdf
-rw-r--r-- 1 root root 1.6M Apr 8 18:53 activity4.pdf
但是,如果我从 Mac OS 解压缩文件(只需双击 zip 文件),它会提取除文件之外的所有内容Another_Archive.zip
。见下文:
如果我从 CLI 的 MacOS 解压缩它,它工作得非常好。这是由于 MacOS 上的取消归档过程存在某种问题,还是由于创建 zip 文件的方式存在问题?
我想 Finder 拒绝将文件从您正在使用的文件夹中提取到父文件夹中,因为这不符合用户的期望并且可能很危险(破坏您认为安全的文件。)
所以不要在 zip 文件中包含父文件夹的路径。
您可以在与 PDF 相同的文件夹中创建指向 zip 的符号链接:
或者,您可以将 PDF 打包到 zip 中,然后将存档添加到其中。
或者,如果您
zip
有-j
选项(“垃圾(不记录)目录名称”),这将导致它存储没有目录路径的文件。