我需要同时为每个文件单独运行相同的命令。
我试过了
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
首先列出list
file中的txt文件。parallel
命令将script
在后台对每个 file_name 运行。最后一个wait
命令将等待所有后台作业完成,然后您可以继续执行进一步的命令。