У вас есть аргументы поменялись местами. Попробуй это:
-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, чтобы игнорировать регистр в архиве.
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
zip
, как указано в man-странице, которую вы цитировали. Например, если вы находитесь в каталоге , содержащемfile1.txt
,file2.txt
иfile3.txt
вы можете выполнитьls -1 | zip -q 'files.zip' -@
, что позволит создать архив ,files.zip
содержащий 3 файлы по конвейеруzip
с их именами файлов нетронутыми.