> On 17 Feb 2015, at 16:27, Vladislav V. Prodan <[email protected]> wrote: > > > > 17 февраля 2015 г., 17:10 пользователь George L. Yermulnik <[email protected] > <mailto:[email protected]>> написал: > Hello! > > On Tue, 17 Feb 2015 at 04:34:05 (+0200), Vladislav V. Prodan wrote: > > > # leave every fifth file, and the rest - remove > > for i in `find $dir -type d` > > do > > cd $i || exit; > > ls $i | grep snap-\*\.\*\.\*\.jpg | awk 'NR%5!=1' | xargs -I{} -n1 rm {} > > done; > > про -delete и xargs уже написали > > Принято. > > > я добавлю: > > "cd $i || exit" - тут, вероятно, s/exit/continue/ - вряд ли задумано, > чтобы скрипт отваливался на первой же "сбойнувшей" директории. > > Именно exit , чтоб rm не сработал. Ибо при первом же сбое, очевидно, и сразу > пойдут другие сбои. > > > > "ls $i | grep snap-\*\.\*\.\*\.jpg" - может быть будет немного быстрее, > если заменить ls/grep на один find: find $i -type f -name "snap-*.*.*.jpg" > > Да, надо заменить на find, хотя, в идеале написать на чистом awk, но тут хз с > производительностью. > Я попытался дебажить, и подозреваю, что xargs -I{} -n1 rm {} очень медленно > работает, вызывает раз в секунду rm > Так и хочется многопоточность засунуть, используя & в конце скрипта, но > боюсь, винтам не понравится овер 700 запросов.
А зачем Вы дергаете rm на каждый файл отдельно? xargs -J % rm %
