On Mon, Jul 09, 2007 at 08:13:28PM +0400, Anton Farygin wrote: > Dmitry V. Levin wrote: > > On Mon, Jul 09, 2007 at 01:20:34PM +0700, Slava Semushin wrote: > >> 2007/7/9, Vitaly Kuznetsov : > >> [...] > >>> +rm -f `find %buildroot -type f -name perllocal.pod -o -name .packlist` > >>> +find %buildroot -name API.bs -a -size 0 -exec rm -f {} \; > >> Как-то нелогично. Почему бы и в первом случае не использовать find + > >> exec? Или даже в обоиз случаях find -delete > > > > Это просто сборник ошибок: > > - rm -f `find ...` это небезопасно в принципе, забудьте эту конструкцию > > навсегда. > > - find ... -exec rm -f {} \; это небезопасно в принципе, забудьте эту > > конструкцию навсегда. > > Кстати, а что ты скажешь про конструкцию вида: > > find . -type f|while read line;do rm -f "$line";done В этой конструкции много недостатков. Я не буду их перечислять, просто рекомендую ознакомиться с соответствующей документацией, $ info -f find security Кстати, немного истории "find -delete": Этот параметр ведёт свою историю с ноября 1997-го года, когда патч к findutils-4.1 анонсировал в bugtraq'е Douglas Siebert: http://marc.info/?l=bugtraq&m=87930069226479 Этот патч был адаптирован для Owl в сентябре 2000-го года, у нас -- а апреле 2002-го года. GNU findutils поддерживает параметр -delete с ноября 2004 года (после того как GNU findutils обрёл нового мантейнера): http://savannah.gnu.org/patch/index.php?3454 -- ldv