Zip

如何將單獨定位的文件打包到同一個文件夾結構中?

  • October 22, 2014

當我使用 zip 打包來自不同位置的文件時,例如:

zip pack.zip /home/jack/jack.txt /home/jim/jim.txt

這些文件將儲存在“pack.zip”中,結構如下:

./home/jack/jack.txt
./home/jim/jim.txt

但這不是我所期望的。我只是希望文件儲存在 zip 文件的根目錄中,例如:

./jack.txt
./jim.txt

我該怎麼辦?

使用-jzip 選項刪除(垃圾)路徑:

-j

–junk-paths

僅儲存已保存文件的名稱(垃圾路徑),不儲存目錄名稱。預設情況下, zip 將儲存完整路徑(相對於目前目錄)。

例子

例如,假設我們有這些文件:

$ ls */
a/:
file

b/:
file2

我們用 zip 壓縮它們-j

$ zip -j new.zip */*
 adding: file (stored 0%)
 adding: file2 (stored 0%)

它們沒有路徑儲存:

$ unzip -l new.zip
Archive:  new.zip
 Length      Date    Time    Name ("^" ==> case
---------  ---------- -----   ----   conversion)
       0  2014-10-21 22:15   file
       0  2014-10-21 22:14   file2
---------                     -------
       0                     2 files

具有相同基本名稱的文件將產生錯誤

請注意,使用 時-j,如果來自不同路徑的兩個文件具有相同的名稱,則會出現錯誤:

$ zip -j new2.zip */*
       zip warning:   first full name: a/file
                     second full name: b/file
                    name in zip file repeated: file
                    this may be a result of using -j

zip error: Invalid command arguments (cannot repeat names in zip file)

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