Zip

壓縮包含 zip 文件的文件夾(在 MacOS 上不可見,除非通過 CLI 解壓縮)

  • April 8, 2022

我正在嘗試創建一個包含 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 的符號連結:

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

引用自:https://unix.stackexchange.com/questions/698519