
Esto está muy cerca del SO.¿Cómo extraer sólo una carpeta específica de un archivo comprimido a un directorio determinado? Necesito algo cercano pero siempre obtengo la carpeta con el contenido, no solo el contenido. Esto es lo que se sugirió:
#note $2 is passed in and would be == "magefoler"
unzip /srv/file.zip "$2-master/*" -d /srv/www/mage/
Lo que necesito hacer para tomar un zip que tenga esta estructura.
file.zip
|-magefoler-master/
|-magefoler-master/app/*tons of files
|-magefoler-master/skin/*tons of files
y necesito moverlo a otra carpeta, pero no puedo moverlo magefoler
, solo quiero las carpetas app
y skin
. Esto no significa que siempre serán esas dos carpetas, solo que cualquier contenido secundario, archivo o carpeta, es magefoler
lo que necesito eliminar. Lo que se intenta evitar es exportar todo a una carpeta y luego simplemente moverlo desde allí.
El resultado final que estoy buscando proviene del archivo zip que envío a la /mage
carpeta como esta:
/srv/www/mage/
|--/mage/app/*tons of files
|--/mage/skin/*tons of files
Respuesta1
¿No puedes simplemente descomprimirlo aquí?
$ unzip /srv/file.zip "$2-master/*" -d /srv/www/
Y luego mueva/cambie el nombre de la carpeta magefoler-master
a mage
:
$ mv /srv/www/magefoler-master /srv/www/mage
¿Alternativas?
Al investigar este problema exacto en el pasado, solo pude encontrar 2 métodos adicionales para hacer algo como esto sin tener que recurrir al uso del archivo mv
.
- Usando FUSE como sugiere Gilles aquí:¿Cómo puedo forzar que descomprimir/zip no cree un subdirectorio cuando lo extraigo?
- Usar la herramienta
zipnote
para mover los archivos dentro del archivo zip, antes de extraerlos.