Я намагаюся оновити часову позначку до поточного часу для всіх файлів 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
.