Помогите пожалуйста со скриптом

Помогите пожалуйста в написании скрипта.
В директории находятся файлы для обработки. Существует функция которая будет
их обрабатывать. Из директории надо взять 8 файлов и отправить в работу, потом
следующие 8 и так далее. До тех пор пока файлы не закончатся. Как такой цикл
изобразить?

Что подразумевается под

Что подразумевается под передать в обработку ? Передать имена файлов на вход функции или переместить куда-либо файлы и вызвать функцию ?

kostik87 написал(а): Что

kostik87 написал(а):
Что подразумевается под передать в обработку ? Передать имена файлов на вход функции или переместить куда-либо файлы и вызвать функцию ?

Наверное лучше сначала переместить, а потом передать имена файлов функции. Я
думаю что можно это представить как последовательность команд для кажлого
файла. Я не представляю как из каталога отловить определённое количество
файлов порциями пока не закончатся. Пример бы какой нибудь для затравки. Вобще в башку ничего не приходит.

Ну хотя бы что-то

Ну хотя бы что-то такое:

#!/bin/sh
file_names="" 
file_nums=0
files_dir=/tmp/dir
for i in `ls -1 $files_dir` 
do  
   file_nums=$(($file_nums + 1)) 
   file_names="$file_names $i" 
   if [ $file_nums -eq 8 ] 
      then 
         echo $file_names 
         file_names="" 
         file_nums=0 
   fi 
done
test -n "$file_names" && echo $file_names

kostik87 написал(а):Ну хотя

kostik87 написал(а):
Ну хотя бы что-то такое:

#!/bin/sh
file_names="" 
file_nums=0
files_dir=/tmp/dir
for i in `ls -1 $files_dir` 
do  
   file_nums=$(($file_nums + 1)) 
   file_names="$file_names $i" 
   if [ $file_nums -eq 8 ] 
      then 
         echo $file_names 
         file_names="" 
         file_nums=0 
   fi 
done
test -n "$file_names" && echo $file_names

Большое спасибо, завтра с утра почитаю и попробую понять. Что-то к ночи гора дел свалилась даже поесть ни как не могу.

P.S. Ещё раз огромное спасибо. Больше с подобными вопросами не придётся обращаться.

kostik87 написал(а): Ну хотя

kostik87 написал(а):
Ну хотя бы что-то такое:

#!/bin/sh
file_names="" 
file_nums=0
files_dir=/tmp/dir
for i in `ls -1 $files_dir` 
do  
   file_nums=$(($file_nums + 1)) 
   file_names="$file_names $i" 
   if [ $file_nums -eq 8 ] 
      then 
         echo $file_names 
         file_names="" 
         file_nums=0 
   fi 
done
test -n "$file_names" && echo $file_names

Я не понял одного места Вы не могли бы разъяснить? Строка

file_names="$file_names $i"

"$file_names $i" вот это выражение не понял.

В переменной i находится имя

В переменной i находится имя файла, в переменной file_names находятся имена нескольких файлов, это строка добавляет к строке в переменной file_names значение переменной i.

Т.е. в переменной file-names собирается строка " файл1 файл2 файл3 файл4 файл5 файл6 файл7 файл8".

Вам эта переменная не нужна, я её использую заместо вашего вызова функции и потом просто вывожу её значение посредством echo, что бы было видно что обрабатываются 8 файлов, это всё только ради примера.

Вы же вместо этой строки можете перемещать (копировать) файлы в другую директорию или делать что-либо другое.

Ясно, не устану говорить Вам

Ясно, не устану говорить Вам спасибо. Ни в одной книжке не прочитаешь того что объяснит живой человек.
Простой пример: увидел в Вашем скрипте "ls -1" и усомнился, я же умный и знаю что подразумевалось -l.
Ну а раз умный открыл man ls и понял что жизнь гораздо проще чем кажется.

А откуда интересно живой

А откуда интересно живой человек берет информацию дабы поделиться с вами? Рекомендую разобыть книжку abs. Онлайн версия тут http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html

Цикл обычный, только надо

Цикл обычный, только надо считать кол-во файлов и на кратных 8 запускать

если вы хотите параллельное выполнение в 8 потоков, то проще готовый скачать. или написать однопоточный и запустить 8 раз на разных наборах файлов

_SerEga_ написал(а): Цикл

_SerEga_ написал(а):
Цикл обычный, только надо считать кол-во файлов и на кратных 8 запускать

если вы хотите параллельное выполнение в 8 потоков, то проще готовый скачать. или написать однопоточный и запустить 8 раз на разных наборах файлов

Что-то я не совсем понял. что готовый скачать? Однопоточный написан, я его и запускаю как Вы говорите. Так конечно проще но не лучше. В каталоге каждый раз разное количество файлов.

Задача мягко говоря не нова.

Задача мягко говоря не нова. есть готовые batch системы(очередь задач, сколько-то параллельно выполняется, как только одна завершается, запускается следующая из очереди), но они предлагают гораздо больший функционал, соответственно и сложнее.

Скриптом разделить один набор файлов на 8 не сложно, потом запустить запустить на каждом однопоточный вариант обработки.

А можно пример такой вот

А можно пример такой вот batch системы? И в чём преимущества перед самодельным скриптом?
Ну там, ресурсов меньше потребляют, работают быстрее и надёжнее, настраиваются легче, размером меньше?

Плюс в том, что она уже

Плюс в том, что она уже готовая, у нее может быть много полезного окромя тупого запуска, но это проявится только если юзать активно, постоянно и разнообразно

если раз в день запускать один и тот же скрипт, то лучше свой велосипед - ты в нем разбираешься на 100% и если, что легко попрпавишь или изменишь

http://www.clusterresources.com/torquedocs21/commands/qsub.shtml первая попавшаяся ссылка из гугла

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".