将文件拆分为相同大小的文件,并将这些文件作为 shell 脚本的输入,该脚本应并行运行

将文件拆分为相同大小的文件,并将这些文件作为 shell 脚本的输入,该脚本应并行运行

我想将一个包含 10000 条记录的文件拆分为多个记录大小相同的文件。这些新文件需要作为 shell 脚本的输入。 Shell 脚本应针对每个文件并行运行。我们可以在这里使用任何循环吗?

答案1

假设您的数据文件被调用data.txt并且您要运行的脚本被调用script.sh。然后你可以执行如下操作:

#!/bin/bash

# Create a temporary directory
splitdir="$(mktemp -d)"

# Splite the data-file into files of 1000 lines each
split --lines=1000 -d --suffix-length=3 data.txt "${splitdir}/chunk"

# Run your script on each data file separately
for chunk in "${splitdir}/"*; do nohup script.sh "${chunk}" &; done

你也可以使用类似的方法参数或者GNU并行而不是 Bash 循环。

相关内容