Příkaz, který použijete, spustí zip pro každý soubor zvlášť, zkuste toto:
find . -name <name> -print | zip newZipFile.zip [email protected]
[email protected]
řekne zipu, aby četl soubory ze vstupu. Z man zip(1),
[email protected]
seznamy souborů. Pokud je seznam souborů zadán jako[email protected]
[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.