J'essaie de mettre à jour l'horodatage à l'heure actuelle sur tous les fichiers XML de mon répertoire (de manière récursive). J'utilise Mac OSX 10.8.5.
Sur environ 300 000 fichiers, la echo
commande suivante prend 10 secondes :
for file in `find . -name "*.xml"`; do echo >> $file; done
Cependant, la touch
commande suivante prend 10 minutes ! :
for file in `find . -name "*.xml"`; do touch $file; done
Pourquoi l'écho est-il tellement plus rapide que le toucher ici?
touch `find . -name "*.xml"`
encore plus rapide que les deux ci-dessus?
>>$file
touch
autant de fois? find . -name '*.xml' -print0 | xargs -0 touch
invoque touch
beaucoup moins de fois (éventuellement une seule fois). Fonctionne sous Linux, devrait fonctionner sous OS X.
echo >> $file
va ajouter une nouvelle ligne à$file
et donc le modifier. Je suppose que ce sera la même chose pour OS / X. Si vous ne le souhaitez pas, utilisezecho -n >> $file
.