запускать несколько команд параллельно в Unix - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть несколько файлов, и я должен вырезать несколько столбцов из этих файлов, чтобы генерировать новые файлы Unix.Я пытался сделать это в цикле, выбирая файлы в каталоге и генерируя новые файлы, но поскольку каталог, имеющий 100 таких файлов, генерации новых файлов занимает много времени.

Может кто-нибудь помочь, если я могу выбрать 10 файлов впараллельно и сгенерируйте 10 новых файлов и снова следующий набор из 10 файлов, поскольку это сократит время.

Мне нужен пример блока кода Unix для этого

cut -b 1-10,25-50,65-79 file1.txt > file_cut1.txt

cut -b 1-10,25-50,65-79 file2.txt > file_cut2.txt

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете сделать это довольно просто с помощью GNU Parallel , например:

parallel 'cut -b 1-10,25-50,65-79 {} > {.}_cut.txt' ::: file*txt

, где:

  • {} представляет текущее имя файла, и
  • {.} представляет текущее имя файла без его расширения.

Сделайте резервную копию файлов в вашем каталоге, прежде чем пытаться это сделать, или любые незнакомые команды.

Он будет обрабатывать ваши файлы параллельно, выполняя N за раз, где N - это количество ядер в вашем процессоре.Если вы хотите, чтобы он выполнял, скажем, 8, заданий одновременно, используйте:

parallel -j 8 ...

Если вы хотите увидеть, что он будет делать , фактически ничего не делая, используйте:

parallel --dry-run ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...