web-dev-qa-db-fra.com

comment puis-je rechercher des fichiers et les compresser dans un seul fichier Zip

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?

30
LOGAN

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.

62
iabdalkader

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.

15
jheddings

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.

12
Dan Jones