同时对多个文件运行相同的命令

同时对多个文件运行相同的命令

我需要同时为每个文件单独运行相同的命令。

我试过了

for file in *.txt; do ./script <"$file"; done

但它开始第一个并等待它完成然后转到下一个。

我需要把它们一起启动。

答案1

如果script不需要用户的任何输入,您可以使用 shell 的作业处理功能在后台运行它

for file in *.txt; do ./script <"$file" & done

当您附加&到命令时,它会在后台运行。抬头作业控制bash在(或您首选的 shell)的手册页中了解详细信息。

答案2

ls *.txt > list
cat list | parallel './script {}' &
wait

首先列出listfile中的txt文件。parallel命令将script在后台对每个 file_name 运行。最后一个wait命令将等待所有后台作业完成,然后您可以继续执行进一步的命令。

相关内容