Si desea almacenar todos los archivos folder
bajo su nombre sin una indicación de directorio, puede usar la -j
opción.
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}
Si tiene archivos en subdirectorios, tampoco tendrán ningún componente de directorio en el archivo, por ejemplo folder/subdir/foo
, se almacenarán en el archivo como foo
.
Pero probablemente sería más fácil cambiar al directorio. Es casi exactamente la misma cantidad de tipeo que el método de corsé anterior. Si lo hace, si incluye archivos en subdirectorios, tendrán su ruta relativa desde el directorio que cambió, por ejemplo folder/subdir/foo
, se almacenarán como subdir/foo
.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Para uso interactivo, pierde la terminación del shell de esta manera, porque el shell no se da cuenta de que estará en un directorio diferente cuando ejecute el zip
comando. Para remediar eso, emita el cd
comando por separado. Para volver fácilmente al directorio anterior, puede usar pushd
y popd
.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Si desea un control total sobre las rutas almacenadas en un archivo zip, puede crear un bosque de enlaces simbólicos. A menos que se indique lo contrario, zip
no almacena enlaces simbólicos.
-j
se aplicaría, y eso comprimiría todas las carpetas en un solo directorio de nivel raíz dentro del ZIP. Eso no es lo que estás buscando, ¿verdad?