web-dev-qa-db-fra.com

comment spécifier le répertoire cible unzip

Existe-t-il une option sur la commande linux Zip telle que je puisse coder en dur le répertoire cible dans lequel il se décompresse? Par exemple, j'aimerais compresser les fichiers ./mydir dans myzipfile.Zip mais je souhaite que la commande unzip crée un répertoire spécifique "projx" et étende les fichiers qui se trouvent sous ./mydir.

Zip -r myzipfile.Zip mydir (-option to expand into 'projx' when unzipped? )
21
seedhom

Une telle option n'existe pas, du moins pour Info-Zip. Vous devez créer un répertoire projx vous-même, y déplacer/copier vos fichiers, puis le transmettre à Zip.

Si le répertoire existe déjà, passez simplement l'option -d à unzip pour spécifier le répertoire cible à extraire.

18
scai

Pour ce faire, il existe un autre moyen. Vous pouvez convertir tout le contenu du fichier Zip en appliquant la méthode suivante. Le répertoire cible est " projx " et exécutez la commande suivante.

cd /projx && unzip -j /path/to/myzipfile.Zip

Option - j est appelé "chemin d'accès indésirable" et vide simplement chaque fichier dans le répertoire en cours au lieu de extraire toute structure de répertoire.

3
Chaminda Bandara

Je ne connais aucune option de ligne de commande spécifique, mais vous pouvez utiliser les commandes suivantes pour atteindre votre objectif:

ln -s mydir projx
Zip -r myzipfile.Zip projx
rm projx

La première commande crée un lien symbolique afin que vous puissiez accéder aux fichiers dans mydir également via projx. Ensuite, en utilisant Info-Zip (testé avec la version 2.31), le lien symbolique est déréférencé (il s'agit de la valeur par défaut, sauf si vous spécifiez -y) et les fichiers sont stockés de manière récursive:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

Vous voyez, le nom du dossier est également stocké dans le fichier. Ainsi, lors de l'extraction, le répertoire projx est créé.

Cependant, je ne peux pas penser à une possibilité de stocker des chemins absolus, mais c'est quand même une mauvaise idée.

0
mpy