Ich habe eine große Anzahl von Skripten, die als separate Jobs auf einem Computercluster ausgeführt werden können, der Slurm verwendet. Ich möchte einige davon basierend auf dem Inhalt zum Senden auswählen. Mit grep ist es einfach, die Dateinamen der gewünschten Jobs zu identifizieren, aber ich habe Probleme, diese weiterzuleiten und zu senden.
Ich dachte, ich könnte so etwas machen:
grep -l 'regex' script_folder/* | xargs sbatch
Allerdings werden dadurch anscheinend alle Skripte als ein Job übermittelt, obwohl ich möchte, dass jedes Skript ein eigener Job ist.
Antwort1
grep -l 'pattern' script_folder/* | xargs -n 1 sbatch
xargs
liest standardmäßig so viel, wie in eine Befehlszeile passt, bevor das angegebene Dienstprogramm mit allen gelesenen Dingen ausgeführt wird.
Damit -n 1
begrenzen Sie die Anzahl der Elemente, die an das Dienstprogramm übergeben werden, auf ein einzelnes Element pro Aufruf.