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? )
semence
la source
Sur Unix: unix.stackexchange.com/questions/12686/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

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.

scai
la source
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.

Chaminda Bandara
la source
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.

mpy
la source
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