Я хочу обработать много файлов, и, поскольку у меня здесь куча ядер, я хочу сделать это параллельно:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Я знаю решение Makefile, но моим командам нужны аргументы из списка глобализации оболочки. Что я нашел это:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
Чтобы использовать его, все, что нужно сделать, это поставить и после заданий и вызова pwait, параметр дает количество параллельных процессов:
> for i in *; do
> do_something $i &
> pwait 10
> done
Но это работает не очень хорошо, например, я попытался, например, с помощью цикла for, конвертирующего много файлов, но из-за которого я получил ошибку и оставил задания отмененными.
Я не могу поверить, что это еще не сделано, так как обсуждение списка рассылки zsh уже давно устарело. Так ты знаешь лучше?