Zip
壓縮文件而不包括父目錄
我有一個包含多個文件的文件夾
文件夾
- artifact1.app
- artifact2.ext2
- artifact3.ext3
- …
我的目標是從該文件夾外部壓縮文件(因此不使用
cd
命令)而不包括文件夾目錄。zip -r ./folder/artifact.zip ./folder/artifact1.app
此命令在最終 zip 中包含文件夾 dir。有什麼提示嗎?
相關問題:壓縮文件夾的內容而不包括文件夾本身
如果您想在
folder
沒有目錄指示的情況下將所有文件儲存在其名稱下,則可以使用該-j
選項。zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
或者
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
如果您在子目錄中有文件,它們也不會在存檔中包含任何目錄組件,例如
folder/subdir/foo
將作為foo
.但是切換到目錄可能會更容易。它的輸入量幾乎與大括號方法 aboe 相同。如果您這樣做,如果您在子目錄中包含文件,它們將具有您更改到的目錄的相對路徑,例如
folder/subdir/foo
將儲存為subdir/foo
.(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
zip
對於互動式使用,您會以這種方式失去 shell 完成,因為當您執行命令時,shell 不會意識到您將位於不同的目錄中。要解決這個問題,請cd
單獨發出命令。要輕鬆返回上一個目錄,您可以使用pushd
和popd
。pushd folder zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3 popd
如果您想完全控制儲存在 zip 文件中的路徑,您可以創建一個符號連結森林。除非另有說明,否則
zip
不儲存符號連結。