目前没有提供任何解决方案正确地包含包含空格的文件名。如果文件名包含“或”,有些甚至失败,如果您的输入文件是由用户生成的,那么您应该准备好令人惊讶的文件名。
GNU Parallel可以很好地处理这些文件名,并提供(至少)3种不同的解决方案。如果你的程序需要3和3个参数,那么这将是有效的:
(echo a1.txt; echo b1.txt; echo c1.txt;
echo a2.txt; echo b2.txt; echo c2.txt;) |
parallel -N 3 my-program --file={1} --file={2} --file={3}
要么:
(echo a1.txt; echo b1.txt; echo c1.txt;
echo a2.txt; echo b2.txt; echo c2.txt;) |
parallel -X -N 3 my-program --file={}
但是,如果您的程序需要尽可能多的参数,将适用于命令行:
(echo a1.txt; echo b1.txt; echo c1.txt;
echo d1.txt; echo e1.txt; echo f1.txt;) |
parallel -X my-program --file={}