我的文件很少,因此必须从该文件中删掉几列以生成新的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
答案 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