Linux: especificando el directorio de nivel superior al crear el archivo zip


12

Tengo un proyecto con la estructura de directorio habitual (src /, bin /, ...), es decir

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

Y me gustaría crear un archivo con la siguiente estructura de directorios:

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

¿Hay una forma clara de hacer esto, que evite crear un directorio temporal? project-name/ En otro lugar, luego copiando los archivos dentro de una llamada finalmente zip -r ... en ese directorio temporal?

(Básicamente estoy buscando algún tipo de prefijo de ruta o opción de ruta relativa).

Respuestas:


7

Tal vez esto ya se te haya ocurrido, pero ¿por qué no usar un enlace simbólico en lugar de copiar todo?

ln -s project-name project-name-version

entonces usa zip -r a través del enlace sym ( zip desreferenciar enlaces sym por defecto)? Cuando termines puedes simplemente rm El enlace sym. Quizás no sea la solución más elegante, pero no conozco una forma obvia de hacerlo. zip directamente.


1
Esto también funciona con tar si usas el -h bandera.
Kyle Strand

(También estoy usando el z bandera; No estoy seguro de si eso lo afecta.
Kyle Strand

11

Esto es más un consejo que una respuesta: usar Git !

Si configura un Git repositorio para su proyecto, todo se vuelve bastante sencillo:

git archive HEAD --prefix=project-name-version/ \
    --format=zip -o project-name-version.zip

1
Excelente consejo, gracias. Documentación del archivo git: git-scm.com/docs/git-archive
Meglio

Si bien el uso del control de versiones es una buena idea, esta respuesta no coincide con la pregunta del caso genérico.
raimue

@Raim "Este es más un consejo que una respuesta: ¡usa Git!" Escrito allí desde hace 4 años, gracias por señalarlo ...
cYrus

1
Si esto no fue pensado como una respuesta, debe convertirse en un comentario.
raimue
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.