Я пытаюсь обновить метку времени до текущего времени для всех файлов XML в моем каталоге (рекурсивно). Я использую Mac OSX 10.8.5.
Приблизительно для 300 000 файлов следующая echo
команда занимает 10 секунд :
for file in `find . -name "*.xml"`; do echo >> $file; done
Однако следующая touch
команда занимает 10 минут ! :
for file in `find . -name "*.xml"`; do touch $file; done
Почему эхо намного быстрее, чем прикосновение?
touch `find . -name "*.xml"`
будет даже быстрее, чем оба из вышеперечисленного?
>>$file
touch
вообще так много раз вызывать ? find . -name '*.xml' -print0 | xargs -0 touch
вызывает touch
намного меньше раз (возможно, только один раз). Работает на Linux, должен работать на OS X.
echo >> $file
он добавит новую строку$file
и, таким образом , изменит ее. Я предполагаю, что это будет то же самое для OS / X. Если вы не хотите этого, используйтеecho -n >> $file
.