Hello!

On Tue, 17 Feb 2015 at 21:38:46 (+0200), Vladislav V. Prodan wrote:

> > >     ls $i | grep snap-\*\.\*\.\*\.jpg | awk 'NR%5!=1' | xargs rm

> > А "ls snap-*.*.*.jpg" даёт отличный от "ls $i | grep snap-\*\.\*\.\*\.jpg"
> > результат?

> Первый вариант:
> ...
> for i in `find $dir -type d`
> do
>     cd $i || continue;
>     ls snap-*.*.*.jpg
> done;

> И вот тут дважды ls вызывается...
> # ./clear-video-storage-3.sh
> ls: snap-*.*.*.jpg: No such file or directory
> snap-16.00.00.jpg       snap-16.12.00.jpg       snap-16.24.00.jpg
> snap-16.36.00.jpg       snap-16.48.00.jpg
> snap-16.00.04.jpg       snap-16.12.04.jpg       snap-16.24.04.jpg
> snap-16.36.04.jpg       snap-16.48.04.jpg
> snap-16.00.08.jpg       snap-16.12.08.jpg       snap-16.24.08.jpg
> snap-16.36.08.jpg       snap-16.48.08.jpg
> ...

> Второй вариант:

> ...
> for i in `find $dir -type d`
> do
>     cd $i || continue;
>     ls $i | grep -c "^snap-*.*.*.jpg"
> done;

> # ./clear-video-storage-3.sh
> 0
> 900

Так у Вас в обоих вариантах ls дважды вызывается, поскольку в цикл
попадает _две_ директории: собственно сама $dir и поддиректория $dir/$i
Замените "find $dir -type d" на "find $dir -mindepth 1 -type d"
Я бы даже ещё и "-maxdepth 1" использовал - чтобы избежать неожиданностей =)

-- 
George L. Yermulnik
[YZ-RIPE]

Ответить