Se si desidera archiviare tutti i file foldercon il loro nome senza un'indicazione di directory, è possibile utilizzare l' -jopzione.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
o
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Se hai file in sottodirectory, non avranno nemmeno alcun componente di directory nell'archivio, ad esempio folder/subdir/foosaranno archiviati nell'archivio come foo.
Ma sarebbe probabilmente più semplice passare alla directory. È quasi esattamente la stessa quantità di digitazione del metodo del controvento. Se lo fai, se includi i file nelle sottodirectory, avranno il loro percorso relativo dalla directory in cui sei cambiato, ad es. folder/subdir/fooSaranno memorizzati come subdir/foo.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Per uso interattivo, si perde il completamento della shell in questo modo, poiché la shell non si rende conto che ci si troverà in una directory diversa quando si esegue il zipcomando. Per rimediare, emettere il cdcomando separatamente. Per tornare facilmente alla directory precedente, è possibile utilizzare pushde popd.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Se si desidera il pieno controllo dei percorsi memorizzati in un file zip, è possibile creare una foresta di collegamenti simbolici. Salvo diversa indicazione, zipnon memorizza collegamenti simbolici.
-jsi applicherebbe solo e ciò comprimerebbe tutte le cartelle in una singola directory a livello di root all'interno dello ZIP. Non è quello che stai cercando, vero?