Sie haben die Argumente ausgetauscht. Versuche dies:
-d
--delete
Entfernen (Löschen) von Einträgen aus einem ZIP-Archiv. Zum Beispiel:
zip -d foo foo/tom/junk foo/harry/\* \*.o
entfernt den Eintrag foo/tom/junk
, alle Dateien, die mit beginnen
foo/harry/
, und alle Dateien, die mit enden .o
(in einem beliebigen Pfad). Beachten Sie, dass die Erweiterung des Shell-Pfadnamens durch umgekehrte Schrägstriche verhindert wurde, sodass zip die Sternchen sehen kann, sodass zip mit dem Inhalt des ZIP- Archivs anstelle des Inhalts des aktuellen Verzeichnisses übereinstimmt . (Die Backslashes werden auf MSDOS-basierten Plattformen nicht verwendet.) Kann auch Anführungszeichen verwenden, um die Sternchen wie in zu umgehen
zip -d foo foo/tom/junk "foo/harry/*" "*.o"
Wenn die Sternchen auf einem System, auf dem die Shell Platzhalterzeichen erweitert, nicht ausgeblendet werden, werden die Sternchen möglicherweise in eine Liste von Dateien im aktuellen Verzeichnis konvertiert, und diese Liste wird zum Löschen von Einträgen aus dem Archiv verwendet.
Unter MSDOS unterscheidet -d zwischen Groß- und Kleinschreibung, wenn es mit den Namen im ZIP- Archiv übereinstimmt . Dies erfordert, dass Dateinamen in Großbuchstaben eingegeben werden, wenn sie von PKZIP auf einem MSDOS-System komprimiert wurden. (Wir betrachteten machen diesen Fall unempfindlich auf Systeme , in denen Wege Fall unempfindlich waren, aber es ist möglich , das Archiv kam von einem System , in dem Fall nicht egal und das Archiv kann sowohl umfassen Bar
und bar
als separate Dateien im Archiv.) Aber die neue Option sehen - ic , um Groß- / Kleinschreibung im Archiv zu ignorieren.
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
zip
, wie in der von Ihnen angegebenen Manpage angegeben. Zum Beispiel, wenn Sie in einem Verzeichnis sind enthaltenfile1.txt
,file2.txt
undfile3.txt
können Sie ausführenls -1 | zip -q 'files.zip' -@
, die das Archiv erstellen wirdfiles.zip
die 3 - Dateien enthält , die Sie geleitetzip
intakt mit ihren Dateinamen.