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.