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