URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89648
[ Назад ]

Исходное сообщение
"Скрипт исполняющий по порядку"

Отправлено SAY , 20-Авг-10 15:29 
Добрый день!

Есть файлы
00.ddd
01.ccc
02.bbb
03.aaa

как их выполнить по порядку в скрипте, если изначально неизвестно количество файлов?
пробовал:


find ./ -name "[0-9][0-9].*" -exec {} \;

но выполняются в произвольном поядке.

Спасибо!


Содержание

Сообщения в этом обсуждении
"Скрипт исполняющий по порядку"
Отправлено Michael , 20-Авг-10 15:39 
>[оверквотинг удален]
>как их выполнить по порядку в скрипте, если изначально неизвестно количество файлов?
>
>пробовал:
>
 
>find ./ -name "[0-9][0-9].*" -exec {} \;
>

>
>но выполняются в произвольном поядке.
>
>Спасибо!

поясните что по пошему значит "по порядку" и "в произвольном порядке"


"Скрипт исполняющий по порядку"
Отправлено SAY , 20-Авг-10 15:44 
>[оверквотинг удален]
>>пробовал:
>>
 
>>find ./ -name "[0-9][0-9].*" -exec {} \;
>>

>>
>>но выполняются в произвольном поядке.
>>
>>Спасибо!
>
>поясните что по пошему значит "по порядку" и "в произвольном порядке"

по порядку:


00.ddd
01.ccc
02.bbb
03.aaa

, но выполняется

00.ddd
03.aaa
01.ccc
02.bbb

это скорее всего связано с тем, что файлы 01.ccc и 02.bbb были созданы после 03.aaa


"Скрипт исполняющий по порядку"
Отправлено Michael , 20-Авг-10 15:53 
>[оверквотинг удален]
>

>, но выполняется
>
 
>00.ddd
>03.aaa
>01.ccc
>02.bbb
>

>это скорее всего связано с тем, что файлы 01.ccc и 02.bbb были
>созданы после 03.aaa

посмотрите в сторону sort -g


"Скрипт исполняющий по порядку"
Отправлено YuryD , 20-Авг-10 15:54 
man find на предмет -s и примечания про разное поведение
Note:  `find -s' and `find | sort' may give different results.

"Скрипт исполняющий по порядку"
Отправлено SAY , 20-Авг-10 15:56 
> man find на предмет -s и примечания про разное поведение
> Note:  `find -s' and `find | sort' may give different
>results.

Использую CentOS 5.5
find -s вываливается с ошибкой.


find: invalid predicate `-s'


"Скрипт исполняющий по порядку"
Отправлено Pahanivo , 20-Авг-10 16:05 
>> man find на предмет -s и примечания про разное поведение
>> Note:  `find -s' and `find | sort' may give different
>>results.
>
>Использую CentOS 5.5
>find -s вываливается с ошибкой.
>
 
>find: invalid predicate `-s'
>

как я понял надо сортировать по номеру перед точкой
смотри в мане 1) ключ разделителя полей - юзай точку 2) использовать цифровую сортировку по первому полю


"Скрипт исполняющий по порядку"
Отправлено 1 , 20-Авг-10 16:01 
>[оверквотинг удален]
>как их выполнить по порядку в скрипте, если изначально неизвестно количество файлов?
>
>пробовал:
>
 
>find ./ -name "[0-9][0-9].*" -exec {} \;
>

>
>но выполняются в произвольном поядке.
>
>Спасибо!

Попробуйте так:
for i in `find . -type f | sort -n`;
do
exec $i;
done


"Скрипт исполняющий по порядку"
Отправлено SAY , 20-Авг-10 16:07 
>[оверквотинг удален]
>>
>>но выполняются в произвольном поядке.
>>
>>Спасибо!
>
>Попробуйте так:
>for i in `find . -type f | sort -n`;
>do
>exec $i;
>done

Выполняется только 00.ddd и все


"Скрипт исполняющий по порядку"
Отправлено SAY , 20-Авг-10 16:13 
>[оверквотинг удален]
>>>
>>>Спасибо!
>>
>>Попробуйте так:
>>for i in `find . -type f | sort -n`;
>>do
>>exec $i;
>>done
>
>Выполняется только 00.ddd и все

Спасибо за наводку!
Так работает:


find ./ -name "[0-9][0-9].*" | sort | while read a
do
  $a
done


"Скрипт исполняющий по порядку"
Отправлено DeadLoco , 20-Авг-10 17:00 
>Спасибо за наводку!
>Так работает:

Еще вот такой вариант возможен:

find ./ -name "[0-9][0-9].*" | sort | xargs -L 1 -J % %