J'ai essayé de rechercher des fichiers et de les compresser avec la commande suivante
find . regexpression -exec Zip {} \;
mais cela ne fonctionne pas. Comment puis-je faire ceci?
La commande que vous utilisez exécutera Zip sur chaque fichier séparément, essayez ceci:
find . -name <name> -print | Zip newZipFile.Zip -@
Le -@
indique à Zip de lire les fichiers depuis l'entrée. De l'homme Zip (1) ,
-@
listes de fichiers. Si une liste de fichiers est spécifiée comme-@
[Pas sous MacOS], Zip prend la liste des fichiers d'entrée depuis l'entrée standard au lieu de la ligne de commande.
Vous pouvez également fournir les noms à la suite de votre commande find:
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.
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é nomfichier.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 canalisiez les résultats.