Estoy tratando de actualizar la marca de tiempo a la hora actual en todos los archivos xml en mi directorio (recursivamente). Estoy usando Mac OSX 10.8.5.
En aproximadamente 300,000 archivos, el siguiente echocomando tarda 10 segundos :
for file in `find . -name "*.xml"`; do echo >> $file; done
Sin embargo, el siguiente touchcomando tarda 10 minutos . :
for file in `find . -name "*.xml"`; do touch $file; done
¿Por qué el eco es mucho más rápido que tocar aquí?
touch `find . -name "*.xml"` incluso más rápido que los dos anteriores?
>>$file
touchpor qué invocar tantas veces? find . -name '*.xml' -print0 | xargs -0 touchinvoca touchmuchas menos veces (posiblemente solo una vez). Funciona en Linux, debería funcionar en OS X.
echo >> $fileagregará una nueva línea$filey, por lo tanto, la modificará. Supongo que será lo mismo para OS / X. Si no quieres eso, úsaloecho -n >> $file.