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? )
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.
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.
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.