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:
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
àunzip
pour spécifier le répertoire cible pour l'extraction.la source
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.
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.
la source
Je ne connais pas une option de ligne de commande spécifique, mais vous pouvez utiliser les commandes suivantes pour atteindre votre objectif:
La première commande crée un lien symbolique, afin que vous puissiez également accéder aux fichiers
mydir
viaprojx
. Puis en utilisantInfo-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:Vous voyez, le nom du dossier est également stocké dans le fichier - donc lors de l'extraction, le répertoire
projx
est créé.Cependant, je ne pense pas à une possibilité de stocker des chemins absolus, mais c'est quand même une mauvaise idée.
la source
-jj
. Sur les autres systèmes d'exploitation, seule l'option-j
est prise en charge (et-jj
est interprétée comme-j
), ce qui supprime tout chemin d'accès et donc conduit à l'opposé (une conception très intelligente ...).