У меня есть большое количество скриптов, которые можно запустить как отдельные задания на вычислительном кластере, который использует slurm. Я хочу выбрать некоторые из них, основываясь на содержимом, для отправки. Легко определить имена файлов заданий, которые мне нужны, с помощью grep, но мне трудно их перенаправить и отправить.
Я подумал, что можно сделать что-то вроде этого:
grep -l 'regex' script_folder/* | xargs sbatch
Однако, похоже, это приводит к отправке всех сценариев как одного задания, хотя я хочу, чтобы каждый сценарий был отдельным заданием.
решение1
grep -l 'pattern' script_folder/* | xargs -n 1 sbatch
xargs
по умолчанию будет считывать столько данных, сколько может поместиться в одной командной строке, прежде чем выполнить указанную утилиту со всем, что она считывает.
При этом -n 1
вы ограничиваете количество элементов, передаваемых утилите, одним элементом за один вызов.