压缩包含 zip 文件的文件夹(在 MacOS 上不可见,除非通过 CLI 解压缩)

压缩包含 zip 文件的文件夹(在 MacOS 上不可见,除非通过 CLI 解压缩)

我正在尝试创建一个 ZIP 存档,其中包含 5 个 PDF 和一个附加 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。见下文:

在此输入图像描述

如果我从 MacOS 的 CLI 中解压它,它就可以正常工作。这是由于 MacOS 上的解档过程出现某种问题,还是由于创建 zip 文件的方式出现问题?

答案1

我想 Finder 拒绝将文件从您正在使用的文件夹中提取到父文件夹中,因为这不符合用户的期望并且可能很危险(破坏您认为安全的文件。)

因此,请勿在 zip 文件中包含父文件夹的路径。

您可以在与 PDF 相同的文件夹中创建 zip 的符号链接:

ln -s ../Another_Archive.zip .
zip Final_Archive.zip *.pdf Another_Archive.zip

或者,您可以将 PDF 打包到 zip 中,然后将存档添加到其中。

zip Final_Archive.zip *.pdf
cd ..
zip directory/Final_Archive.zip Another_Archive.zip

或者,如果您zip-j选项(“垃圾(不记录)目录名称”),这将导致它存储没有目录路径的文件。

 zip -j Final_Archive.zip *.pdf ../Another_Archive.zip

相关内容