Próbuję zaktualizować znacznik czasu do bieżącego czasu we wszystkich plikach xml w moim katalogu (rekurencyjnie). Używam Mac OSX 10.8.5.
W przypadku około 300 000 plików następujące echopolecenie zajmuje 10 sekund :
for file in `find . -name "*.xml"`; do echo >> $file; done
Jednak następujące touchpolecenie zajmuje 10 minut ! :
for file in `find . -name "*.xml"`; do touch $file; done
Dlaczego echo jest tutaj znacznie szybsze niż dotyk?
touch `find . -name "*.xml"` byłoby nawet szybsze niż oba powyższe?
>>$file
touchco w ogóle wywoływać tyle razy? find . -name '*.xml' -print0 | xargs -0 touchwywołuje touchznacznie mniej razy (być może tylko raz). Działa na systemie Linux, powinien działać na systemie OS X.
echo >> $filedoda nowy wiersz$filei tym samym go zmodyfikuje. Zakładam, że będzie tak samo dla OS / X. Jeśli tego nie chcesz, użyjecho -n >> $file.