Je veux compresser plusieurs dossiers dans une arborescence de répertoires comme
V-
something.txt
folder
folder
g.jpg
h.jar
Lorsque j'essaie de le compresser, il finit de créer une archive Zip avec le dossier v à la place de son contenu (sous-répertoires et fichiers).
Comment puis-je éviter ça?
Donc, si je comprends bien, vous essayez d’archiver les fichiers et dossiers d’un dossier particulier, mais sans inclure le dossier racine.
Exemple:
/test/test.txt
/test/test2.txt
où test.txt et test2.txt seraient stockés dans le zip, mais pas/test /
Vous pouvez aller dans le répertoire/test/puis lancer quelque chose comme:
Zip -r filename.Zip ./*
Ce qui créerait une archive dans le même dossier nommé filename.Zip. Ou si vous l'exécutez en dehors du dossier, vous pouvez l'exécuter,
Zip -r test.Zip test/*
Le/* est la partie qui comprend uniquement le contenu du dossier, au lieu du dossier entier.
Edit: OP voulait plusieurs zips, la solution a fini par être un peu un bidouillage, je suis curieux de savoir s'il existe une meilleure façon de le faire.
for d in */ ; do base=$(basename "$d") ; cd $base ; Zip -r $base * ; mv "${base}.Zip" .. ; cd .. ; done;
Utilisez l'option -j
ou --junk-paths
dans votre commande Zip.
Depuis le page de manuel Zip :
-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, Zip will store the full path (relative to the current directory).
Que diriez-vous de cette commande?
$ cd somedir ; Zip -r ../zipped.Zip . * ; cd ..