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 echocommande suivante prend 10 secondes :
for file in `find . -name "*.xml"`; do echo >> $file; done
Cependant, la touchcommande 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
touchautant de fois? find . -name '*.xml' -print0 | xargs -0 touchinvoque touchbeaucoup moins de fois (éventuellement une seule fois). Fonctionne sous Linux, devrait fonctionner sous OS X.
echo >> $fileva ajouter une nouvelle ligne à$fileet donc le modifier. Je suppose que ce sera la même chose pour OS / X. Si vous ne le souhaitez pas, utilisezecho -n >> $file.