Вы должны передать вывод find
в xargs
, работающий в параллельном режиме:
find dir_*/ -type f -name for_loop.sh -print0 | xargs -0 -r -n 1 -P 3 -t sh
Здесь мы просим find
найти все файлы с именами for _loop.sh рекурсивно в каталогах, начинающихся с имен dir _, и передать их xargs, по одному файлу за раз, в параллельный режим запуска не более 3-х процессов в любой момент времени.
Использование нулевого разделителя \0
при выводе имен файлов с помощью find
и разбиении их на пустые значения с помощью xargs
.
Поздно, я знаю, но столкнувшись с этой ситуацией, я бы сделал мягкую ссылку на каталог с приемлемым именем без лишних символов, а затем использовал его в таблице incron.
$ ln -s /path/to/"My Dir With Funny Chars" /path/to/mydirwithoutfunnychars
и
incrontab -e
/path/to/mydirwithoutfunnychars IN_CREATE /path/to/do_this.sh $1 $2