Posts Tagged "find"

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

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 : Shell morgan@morgan-Studio-1749$ cd /tmp morgan@morgan-Studio-1749:/tmp$ mkdir testdir morgan@morgan-Studio-1749:/tmp$ touch testdir/{0000..9999} morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} \; real 0m10.779s user 0m0.691s sys 0m9.908s morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} + real 0m0.055s user 0m0.018s sys 0m0.037s morgan@morgan-Studio-1749:/tmp$ 12345678910111213141516 morgan@morgan-Studio-1749$ cd /tmpmorgan@morgan-Studio-1749:/tmp$ mkdir testdirmorgan@morgan-Studio-1749:/tmp$ touch testdir/{0000..9999} morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} \; real 0m10.779suser 0m0.691ssys 0m9.908s morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} + real 0m0.055suser 0m0.018ssys 0m0.037smorgan@morgan-Studio-1749:/tmp$ 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...

Read More