У вас есть аргументы поменялись местами. Попробуй это:
zip -d gallery.zip "picture_43_9.jpg"
Со страницы руководства zip(1) :
-d
--delete
Удалить (удалить) записи из zip-архива. Например:
zip -d foo foo/tom/junk foo/harry/\* \*.o
удалит запись foo/tom/junk
, все файлы, начинающиеся с foo/harry/
, и все файлы, заканчивающиеся на .o
(по любому пути). Обратите внимание, что расширение имени пути оболочки было запрещено с помощью обратной косой черты, поэтому zip может видеть звездочки, позволяя zip совпадать с содержимым zip- архива вместо содержимого текущего каталога.
(Обратные косые черты не используются на платформах на основе MSDOS.) Можно также использовать кавычки, чтобы избежать звездочек, как в
zip -d foo foo/tom/junk "foo/harry/*" "*.o"
Невозможность избежать звездочек в системе, где оболочка расширяет символы подстановки, может привести к преобразованию звездочек в список файлов в текущем каталоге и этот список, используемый для удаления записей из архива.
В MSDOS -d чувствительна к регистру, когда совпадает с именами в zip- архиве. Для этого необходимо, чтобы имена файлов вводились в верхнем регистре, если они были заархивированы PKZIP в системе MSDOS. (Мы решили сделать этот регистр нечувствительным в системах, в которых пути были нечувствительны к регистру, но возможно, что архив поступил из системы, в которой регистр имеет значение, и архив может включать в себя как Bar
и bar
как отдельные файлы в архиве.) Но посмотрите новую опцию -ic, чтобы игнорировать регистр в архиве.