Příkaz, který použijete, spustí zip pro každý soubor zvlášť, zkuste toto:
find . -name <name> -print | zip newZipFile.zip example@unixlinux.online
example@unixlinux.online řekne zipu, aby četl soubory ze vstupu. Z man zip(1),
example@unixlinux.onlineseznamy souborů. Pokud je seznam souborů zadán jakoexample@unixlinux.online[Ne na MacOS], zip přebírá seznam vstupních souborů ze standardního vstupu místo z příkazového řádku.
Vaše odpověď je blízko, ale toto by mohlo fungovat lépe:
find -regex 'regex' -exec zip filname.zip {} +
Tím se všechny odpovídající soubory vloží do jednoho souboru zip s názvem filename.zip. Nemusíte si dělat starosti se speciálními znaky v názvu souboru (jako je zalomení řádku), což byste udělali, kdybyste výsledky předávali potrubím.
Můžete také zadat názvy jako výsledek příkazu find:
zip name.zip `find . -name <name> -print`
Toto je funkce shellu, který používáte. Můžete hledat "backticks", abyste zjistili, jak to váš shell zvládne.