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 echo
comando richiede 10 secondi :
for file in `find . -name "*.xml"`; do echo >> $file; done
Tuttavia, il seguente touch
comando 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
touch
così tante volte? find . -name '*.xml' -print0 | xargs -0 touch
invoca touch
molte meno volte (probabilmente solo una volta). Funziona su Linux, dovrebbe funzionare su OS X.
echo >> $file
verrà aggiunta una nuova riga$file
e quindi modificata. Presumo che sarà lo stesso per OS / X. Se non lo si desidera, utilizzareecho -n >> $file
.