Разделение найденных файлов для параллельного выполнения команд find -exec [duplicate]

Добрый день,

Я пытался решить эту проблему все утро, но не добился успеха. Я хотел бы найти определенные скрипты в определенной папке и выполнить их все параллельно. Скрипты имеют разные имена, но все заканчиваются на "run.sh". Ниже приведено то, что я безуспешно пытался сделать.

Первый подход заключался в использовании find в сочетании с -execdir. Это работает, однако скрипты выполняются последовательно. Я хочу, чтобы все скрипты выполнялись одновременно (параллельно). Похоже, нет возможности добиться этого с помощью -execdir

find . -name "*run.sh" -type f -execdir 'nohup' {} '&' \;

Затем я попробовал использовать xargs, потому что там есть опция параллельного выполнения (-P). Я еще не пробовал параллельную опцию, потому что не могу заставить xargs запустить скрипты в соответствующих подпапках. Команды ниже выполняют все скрипты, но делают это в папке, в которой я запускаю команду, поэтому сами скрипты не работают. Сценарии должны выполняться в своих собственных подпапках. В приведенном выше примере -execdir делает это в отличие от -exec. Как мне добиться этого с помощью xargs?

nohup find . -name "*run.sh" -type f | xargs -0 -I{} bash -c f\ \{\}

или

nohup find . -name "*run.sh" -type f | xargs -0 -I{} bash -c "f {}"

или

nohup find . -name "*run.sh" -type f | xargs -0 -I{} bash -c "./{}" 

Я очень расстроен и надеюсь, что есть кто-то, кто может помочь. Большое спасибо!

3
задан 2 December 2014 в 13:39

0 ответов

Другие вопросы по тегам:

Похожие вопросы: