comment spécifier le répertoire cible de décompression


21

Existe-t-il une option sur la commande linux zip telle que je puisse coder en dur le répertoire cible dans lequel il est décompressé. Par exemple, je voudrais compresser des fichiers ./mydir dans myzipfile.zip mais je veux que la commande unzip crée un répertoire spécifique "projx" et y développe les fichiers qui étaient sous ./mydir.

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

Réponses:


18

Il n'y a pas une telle option, du moins pas pour Info-ZIP. Vous devez créer un répertoire projx vous, déplacer / copier vos fichiers dans et passer ensuite à zip.

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


4

Pour ce faire, il existe un autre moyen. Vous pouvez aplatir l'intégralité du contenu du fichier zip à l'aide de la méthode suivante. Le répertoire cible est " projx " et exécute la commande suivante.

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

L'option -j est appelée "chemins indésirables" et vide simplement chaque fichier dans le répertoire courant au lieu d'extraire n'importe quelle structure de répertoire.


0

Je ne connais pas une 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 également accéder aux fichiers mydirvia projx. Puis en utilisant Info-ZIP(testé avec la version 2.31) le lien symbolique est déréférencé (c'est la valeur par défaut, sauf si vous le spécifiez -y) et les fichiers sont stockés récursivement:

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 - donc lors de l'extraction, le répertoire projxest créé.

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


Le chemin absolu ne fonctionne que sur MacOS en spécifiant l'option -jj. Sur les autres systèmes d'exploitation, seule l'option -jest prise en charge (et -jjest interprétée comme -j), ce qui supprime tout chemin d'accès et donc conduit à l'opposé (une conception très intelligente ...).
scai
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.