Ви поміняли аргументи. Спробуйте це:
-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]