Necesito crear un archivo zip con este comando:
zip /dir/to/file/newZip /data/to/zip/data.txt
Esto funciona, pero el archivo zip creado crea una estructura de directorio que imita el directorio al archivo sin formato. Es una gran cantidad de carpetas adicionales que no necesito.
No encontré una respuesta en una mirada superficial sobre la página de manual o una búsqueda de Google.
Respuestas:
Puedes usar
-j
.fuente
-j
no funciona para su directorio (junto con-r
)Usar
-j
no funcionará junto con la-r
opción.Entonces, la solución para esto puede ser esto:
O versión en línea
puede dirigir la salida a
/dev/null
si no desea que lacd -
salida aparezca en la pantallafuente
cd path/to/parent/dir/ && zip -r ../../../../name.zip ./* && cd -
cd path/to/parent/dir/
puede calcular../
fácilmente el número de puntos dobles .Usa la
-j
opción:fuente
Algo relacionado: estaba buscando una solución para hacer lo mismo con los directorios. Lamentablemente, la
-j
opción no funciona para esto :(Aquí hay una buena solución sobre cómo hacerlo: /superuser/119649/avoid-unwanted-path-in-zip-file
fuente
Alternativamente, puede crear un enlace simbólico temporal a su archivo:
Esto también funciona para un directorio.
fuente
Retenga el directorio principal para
unzip
que no arroje archivos a todas partesAl comprimir directorios, mantener el directorio padre en el archivo ayudará a evitar ensuciar su directorio actual cuando luego descomprima el archivo
Entonces, para evitar retener todas las rutas, y dado que no puede usar -j y -r juntos (obtendrá un error), puede hacer esto en su lugar:
El
../$(basename $PWD)
es la magia que retiene el directorio padre.Entonces ahora
unzip my.zip
le dará una carpeta que contiene todos sus archivos:En lugar de ensuciar el directorio actual con los archivos descomprimidos:
fuente
Simplemente use la
-jrm
opción para eliminar las estructuras de archivos y directoriosfuente