Entonces, si entiendo correctamente, está tratando de archivar los archivos y carpetas en una carpeta en particular pero sin incluir la carpeta raíz.
Ejemplo:
/test/test.txt
/test/test2.txt
donde test.txt y test2.txt se almacenarían en el archivo zip, pero no / test /
Puede cd en el directorio / test / luego ejecutar algo como,
zip -r filename.zip ./*
Lo que crearía un archivo en la misma carpeta llamada filename.zip. O si lo ejecuta desde fuera de la carpeta que podría ejecutar,
zip -r test.zip test/*
El / * es la parte que incluye solo el contenido de la carpeta, en lugar de toda la carpeta.
Editar: OP quería múltiples cremalleras, la solución terminó siendo un poco pirata, tengo curiosidad por saber si hay una mejor manera de hacerlo.
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;zip -r test.zip test/*no funciona. ¿Hay alguna forma correcta de lograr esto desde fuera del directorio?Use la opción
-jo--junk-pathsen su comando zip.Desde la página de manual de zip :
fuente
¿Qué tal este comando?
fuente
cd. Esperaba que hubiera una manera de especificar la ruta almacenada con mayor precisión.Espero que esto ayude.
Mantiene el shell principal en el mismo directorio y solo cambia el directorio del sub-shell que muere después del comando.
fuente