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