Donc, si je comprends bien, vous essayez d'archiver les fichiers et dossiers dans 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 cd dans le répertoire / test / puis exécuter 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 que vous pourriez exécuter,
zip -r test.zip test/*
Le / * est la partie qui inclut uniquement le contenu du dossier, au lieu du dossier entier.
Edit: OP voulait plusieurs zips, la solution a fini par être un peu un hack, 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;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
ne fonctionne pas. existe-t-il un moyen correct d'y parvenir depuis l'extérieur du répertoire?Utilisez l' option
-j
ou--junk-paths
dans votre commande zip.Depuis la page de manuel de zip :
la source
Et cette commande?
la source
cd
. J'espérais qu'il y avait un moyen de spécifier plus précisément le chemin stocké.J'espère que cela t'aides.
Il garde le shell principal dans le même répertoire et ne change que le répertoire du sous-shell qui meurt après la commande.
la source