Zip
如何將單獨定位的文件打包到同一個文件夾結構中?
當我使用 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
我該怎麼辦?
使用
-j
zip 選項刪除(垃圾)路徑:-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)