95 votes

Supprimer un seul fichier d'une archive zip sous Linux

Je dispose d'une archive zip (créée automatiquement dans un script avec -j -r ) et je voudrais y supprimer un seul fichier. J'ai essayé comme documenté.

zip -d "picture_43_9.jpg" gallery.zip

mais je reçois cette erreur :

zip warning: picture_43_9.jpg not found or empty   
zip error: Nothing to do! (picture_43_9.jpg)  

Bref, il y a est un tel fichier dans l'archive et il n'est pas vide :

unzip -l .../gallery.zip | grep -i 43_9.jpg  
1477092  2013-05-22 14:23   picture_43_9.jpg 

Des idées sur ce que je fais mal ?

146voto

Matt Points 381

Vous avez interverti les arguments. Essayez ceci :

zip -d gallery.zip "picture_43_9.jpg" 

De la zip(1) page de manuel :

-d
--delete
Retirer (supprimer) les entrées d'une archive zip. Par exemple :

zip  -d  foo  foo/tom/junk  foo/harry/\*  \*.o

supprimera l'entrée foo/tom/junk tous les fichiers qui commencent par foo/harry/ et tous les fichiers qui se terminent par .o (dans n'importe quel chemin). Notez que l'expansion du nom de chemin Shell a été inhibée par les barres obliques inverses, de sorte que que zip peut voir les astérisques, ce qui permet zip pour correspondre au contenu de la zip au lieu du contenu du répertoire courant. (Les barres obliques inversées ne sont pas utilisées sur les plates-formes MSDOS). pour échapper aux astérisques comme dans

zip -d foo foo/tom/junk "foo/harry/*" "*.o"

Le fait de ne pas échapper les astérisques sur un système où le Shell développe des les caractères génériques, les astérisques pourraient être convertis en une liste de fichiers fichiers du répertoire actuel et que cette liste soit utilisée pour supprimer des entrées de l'archive.

Sous MSDOS, -d est sensible à la casse lorsqu'il correspond à dans les zip archive. Cela nécessite que les noms de fichiers soient saisis en majuscules s'ils ont été zippés par PKZIP sur un système MSDOS. (Nous avons envisagé de ne pas tenir compte de la casse sur les systèmes où les chemins d'accès sont ne sont pas sensibles à la casse, mais il est possible que l'archive provienne d'un système où la casse a de l'importance et que l'archive comprenne à la fois des noms de fichiers et des noms de fichiers. Bar y bar comme des fichiers séparés dans l'archive). Mais voyez la nouvelle option -ic à ignorer les cas dans les archives.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X