在Unix中并行运行多个命令

时间:2018-09-30 17:02:16

标签: linux bash shell unix

我的文件很少,因此必须从该文件中删掉几列以生成新的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 :(得分:3)

您可以使用 GNU Parallel 这样简单地做到这一点:

for i in range(1, nrk + 1):
    # ...
return vH

其中:

  • print(vH[1])代表当前文件名,并且
  • parallel 'cut -b 1-10,25-50,65-79 {} > {.}_cut.txt' ::: file*txt 代表当前文件名,不带扩展名。

在尝试执行此操作或任何不熟悉的命令之前,请对目录中的文件进行备份。

它将并行处理文件,一次执行{},其中{.}是CPU中的内核数。如果您希望它一次完成8个工作,请使用:

N

如果您想查看将要执行的操作,却没有实际执行任何操作,请使用:

N