Der von Ihnen verwendete Befehl führt zip für jede Datei separat aus, versuchen Sie Folgendes:
find . -name <name> -print | zip newZipFile.zip [email protected]
Der [email protected]
weist zip an, Dateien aus der Eingabe zu lesen. Von man zip(1),
[email protected]
Dateilisten. Wenn eine Dateiliste als [email protected]
angegeben ist [Nicht unter MacOS], zip übernimmt die Liste der Eingabedateien von der Standardeingabe statt von der Befehlszeile.
Ihre Antwort ist knapp, aber das könnte besser funktionieren:
find -regex 'regex' -exec zip filname.zip {} +
Dadurch werden alle übereinstimmenden Dateien in einer ZIP-Datei namens filename.zip gespeichert. Sie müssen sich keine Gedanken über Sonderzeichen im Dateinamen (wie Zeilenumbrüche) machen, was Sie tun würden, wenn Sie die Ergebnisse umleiten würden.
Sie können die Namen auch als Ergebnis Ihres Suchbefehls angeben:
zip name.zip `find . -name <name> -print`
Dies ist eine Funktion der von Ihnen verwendeten Shell. Sie können nach "Backticks" suchen, um festzustellen, wie Ihre Shell damit umgeht.