J'appelle la commande Zip depuis un script où je ne peux pas changer de répertoire. Je dois créer un fichier Zip contenant les éléments dans data/kit123/
à partir du répertoire contenant les données, mais je souhaite que le contenu du fichier Zip ne soit que le contenu de kit123
, avec les chemins relatifs à kit123
.
C'est la structure de répertoire
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Mon script s'exécute dans myworkingdir et ne peut pas changer de répertoire.
Si j'appelle
Zip -r kit123.Zip data/kit123
alors la structure dans le fichier Zip sera
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
mais je veux que ce soit
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Existe-t-il une option Zip que je peux utiliser pour accomplir cela? Il semble étrange que cela dépende de mon répertoire de travail
Je sais que ce n'est pas -j. que l'on détruit la structure dans kit123
Comme vous le constatez dans les commentaires, vous savez maintenant comment changer de répertoire avec votre script, je vais vous expliquer la situation de Zip en ce qui concerne les chemins relatifs.
Il est probablement plus facile d’ouvrir le terminal et cd
à kit123
; vous devez définir le répertoire cible comme répertoire de travail. Vous ne pouvez pas exécuter la commande à partir de la base de votre répertoire personnel, sinon tous les chemins de /home/$USER/..
seront récupérés. Si vous utilisez l'option -j
, tous les chemins seront supprimés, il n'y a pas vraiment d'équivalent de l'option tar --strip
avec laquelle différents niveaux de suppression de chemin peuvent être spécifiés.
Alors s'il vous plaît cd à votre répertoire cible (kit123
) et entrez:
Zip -r kit123.Zip *
Ceci conservera récursivement (-r
) tous les (*
) fichiers et répertoires des fichiers du répertoire en cours (kit123
), et comme les chemins relatifs (-p
) sont conservés automatiquement sauf si l'option -j
est présente, la structure du répertoire sera celle que vous souhaitez. Kit123
et les sous-dossiers (kitpart1
) avec leurs propres fichiers seront présents:
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Vous pouvez vérifier le contenu du fichier Zip avec unzip -l zipfile.Zip
.
Pour plus d'informations sur les autres options disponibles pour Zip
, voir man Zip
et la page de manuel Ubuntu en ligne .