<Précédent | Table des matières | Suivant>
Améliorer l'efficacité
When the Exec- action est utilisée, elle lance une nouvelle instance de la commande spécifiée chaque fois qu'un fichier correspondant est trouvé. Il peut arriver que nous préférions combiner tous les résultats de la recherche et lancer une seule instance de la commande. Par exemple, plutôt que d'exécuter les commandes comme ceci :
ls -l file1
ls -l file2
nous pouvons préférer les exécuter de cette façon:
ls -l fichier1 fichier2
provoquant ainsi l'exécution de la commande une seule fois plutôt que plusieurs fois. Nous pouvons procéder de deux manières. La manière traditionnelle, en utilisant la commande externe xarg et l'autre manière, en utilisant une nouvelle fonctionnalité dans trouver lui-même. Nous parlerons d'abord de la voie alternative.
En remplaçant le point-virgule de fin par un signe plus, nous activons la capacité de trouver pour combiner les résultats de la recherche dans une liste d'arguments pour une seule exécution de la commande souhaitée. Pour revenir à notre exemple, ceci :
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
-rwxr-xr-x 1 moi
-rw-r--r-- 1 moi
-rwxr-xr-x 1 moi
-rw-r--r-- 1 moi
moi 224 2007-10-29 18:44 /home/me/bin/foo
moi 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/moi/foo.txt
0 2016-09-19 12:53 /home/moi/foo.txt
exécutera ls chaque fois qu'un fichier correspondant est trouvé. En changeant la commande en :
find ~ -type f -name 'foo*' -exec ls -l '{}' +
find ~ -type f -name 'foo*' -exec ls -l '{}' +
-rwxr-xr-x 1 moi
-rw-r--r-- 1 moi
-rwxr-xr-x 1 moi
-rw-r--r-- 1 moi
moi 224 2007-10-29 18:44 /home/me/bin/foo
moi 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/moi/foo.txt
0 2016-09-19 12:53 /home/moi/foo.txt
nous obtenons les mêmes résultats, mais le système n'a qu'à exécuter le ls commande une fois.