|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alex Semenyaka 2:461/640 25 Apr 2004 17:41:16 To : Andrey Ostanovsky Subject : Поменять права -------------------------------------------------------------------------------- 25 Apr 04 15:22, you wrote to me: VK>>> например find . -type f -exec chmod 644 {} \; AS>> find . -type f -print0 | xargs -0 chmod 644 AS>> Блин, третий год говорю - давайте к хорошему приучаться. Чтобы AS>> потом, когда попадётся директория с десятком-сотней тысяч файлов AS>> - не было больно и стыдно. AO> Плохо, очевидно, говоришь.:) Расскажи, чем отличается -exec от команды AO> xargs, и почему нужно пользоваться именно xargs. Лучше сразу на AO> примерах. 10000 файлов с exec дадут тебе 10000 запусков (даже не форков!) процесса chmod (со всеми вытекающими накладными расходами), а xargs - с десяток. Вообще, это как бы очевидно. Hо раз у нас сегодня день примеров, то вот цифры: > jot 20000 | xargs touch > time sh -c "find . -type f -print0 | xargs -0 chmod 666" real 0m1.102s user 0m0.199s sys 0m0.902s >time sh -c "find . -type f -exec chmod 666 \{} \;" real 2m41.988s user 0m2.542s sys 2m38.387s Разница - _два_ _с_ _половиной_ _порядка_. А 20000 файлов - это далеко не самое большое количество, с которым мне приходилось иметь дело. И что тогда - ночевать рядом с машиной в тоскливом ожидании окончания find, который с xargs будет пару минут выполняться? Alex --- IMHO в последней инстанции * Origin: ...можжевеловых... (2:461/640) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/1827408bc3c7.html, оценка из 5, голосов 10
|