web-dev-qa-db-fra.com

create Zip - ignore la structure de répertoire

J'ai besoin de créer un zip avec la commande

Zip /dir/to/file/newZip /data/to/Zip/data.txt

Cela fonctionne, mais le fichier Zip créé crée une structure de répertoire imitant le répertoire du fichier brut. Il y a beaucoup de dossiers supplémentaires dont je n'ai pas besoin.

Je n'ai pas trouvé de réponse en un coup d'œil rapide sur la page de manuel ou une recherche sur Google.

191
Jake

Vous pouvez utiliser -j.

-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).
316
Lars Kotthoff

Utilisez l'option -j:

   -j     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 path).
32
Dan D.

L'utilisation de -j ne fonctionnera pas avec l'option -r.
La solution peut donc être la suivante:

cd path/to/parent/dir/;
Zip -r complete/path/to/name.Zip ./* ;
cd -;

Ou version en ligne

cd path/to/parent/dir/ && Zip -r complete/path/to/name.Zip ./* && cd -

vous pouvez diriger la sortie vers /dev/null si vous ne voulez pas que la sortie cd - apparaisse à l'écran

25
Vikas Tawniya

Un peu lié - je cherchais une solution pour faire de même pour les annuaires. Malheureusement, l'option -j ne fonctionne pas pour cela :(

Voici une bonne solution sur la façon de le faire: https://superuser.com/questions/119649/avoid-unwanted-path-in-Zip-file

17
flaky

Vous pouvez également créer un lien symbolique temporaire vers votre fichier:

ln -s /data/to/Zip/data.txt data.txt
Zip /dir/to/file/newZip !$
rm !$

Cela fonctionne aussi pour un répertoire.

2
MirkoBanchi

utilisez simplement l'option -jrm pour supprimer les structures de fichiers et de répertoires

Zip -jrm /path/to/file.Zip /path/to/file
0
Qader Dorosti