Zip

壓縮文件而不包括父目錄

  • November 28, 2015

我有一個包含多個文件的文件夾

文件夾

  • 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單獨發出命令。要輕鬆返回上一個目錄,您可以使用pushdpopd

pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd

如果您想完全控制儲存在 zip 文件中的路徑,您可以創建一個符號連結森林。除非另有說明,否則zip不儲存符號連結。

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