Sto cercando di aggiornare il timestamp all'ora corrente su tutti i file XML nella mia directory (ricorsivamente). Sto usando Mac OSX 10.8.5.
Su circa 300.000 file, il seguente echocomando richiede 10 secondi :
for file in `find . -name "*.xml"`; do echo >> $file; done
Tuttavia, il seguente touchcomando richiede 10 minuti ! :
for file in `find . -name "*.xml"`; do touch $file; done
Perché l'eco è molto più veloce del tocco qui?
touch `find . -name "*.xml"` sarebbe nemmeno più veloce di entrambi i precedenti?
>>$file
touchcosì tante volte? find . -name '*.xml' -print0 | xargs -0 touchinvoca touchmolte meno volte (probabilmente solo una volta). Funziona su Linux, dovrebbe funzionare su OS X.
echo >> $fileverrà aggiunta una nuova riga$filee quindi modificata. Presumo che sarà lo stesso per OS / X. Se non lo si desidera, utilizzareecho -n >> $file.