La commande que vous utilisez exécutera zip sur chaque fichier séparément, essayez ceci :
find . -name <name> -print | zip newZipFile.zip [email protected]
Le [email protected]
indique à zip de lire les fichiers à partir de l'entrée. De man zip(1),
[email protected]
listes de fichiers. Si une liste de fichiers est spécifiée comme[email protected]
[Pas sur MacOS], zip récupère la liste des fichiers d'entrée à partir de l'entrée standard au lieu de la ligne de commande.
Votre réponse est proche, mais cela pourrait mieux fonctionner :
find -regex 'regex' -exec zip filname.zip {} +
Cela mettra tous les fichiers correspondants dans un fichier zip appelé filename.zip. Vous n'avez pas à vous soucier des caractères spéciaux dans le nom de fichier (comme un saut de ligne), ce que vous feriez si vous dirigiez les résultats.
Vous pouvez également fournir les noms à la suite de votre commande de recherche :
zip name.zip `find . -name <name> -print`
Il s'agit d'une fonctionnalité du shell que vous utilisez. Vous pouvez rechercher des "backticks" pour déterminer comment votre shell gère cela.