Différence entre ‘+’ et ‘\;’ à la fin de la commande -exec

Bonjour à tous,

j’écris juste un petit billet car je me suis demandé quelle était la différence entre l’utilisation du + et \; à la fin de -exec lors de l’utilisation de la commande find ?

-exec ... \;  lance une commande après l’autre. Si vous avez trois fichiers, la ligne de commande va être exécuter trois fois.

-exec ... {} +  est utilisé pour les commandes qui peuvent prendre en argument plus d’un fichier à la fois (exemple : cat, stat, ls). Le fichier trouvé par find sont chaîné ensemble comme avec la commande xargs .

Voici un petit comparatif entre les deux commandes sur 10 000 fichiers :

On peux voir que l’utilisation du + (opérateur de concaténation) améliore grandement la vitesse d’exécution (attention, cela ne fonctionne que sur les commandes qui accepte plusieurs fichiers en paramètres).

Qu’est-ce qu’il se passe vraiment ?

Avec \; , la commande exécuté seras : cat 1; cat 2; cat 3 . Avec + , la commande exécuté seras : cat 1 2 3