我创建了一个遍历多个文件的for循环,并将结果输出到一个文件中:
for x in /home/moleculo/x*; do ExtractOutCalls2.sh /home/Scripts/000 $x & done
所以我的每个输入文件都以字母x开头,即x *作为输入。脚本将每个输入文件$ x输出到文件/ home / Scripts / 000
现在我有一个问题:
如果这是在几千个文件上完成的,这是一个好的方式吗?
如果我使用多个输入文件,但指定一个输出文件,这是否意味着我的输出将不会被追加?如果没有,怎么做
此致 Irek
答案 0 :(得分:1)
是的,您的输出文件会被每个进程覆盖。将每个脚本输出到其自己的文件,并在完成所有脚本后,连接输出:
i=0
for x in /home/moleculo/x* ; do
ExtractOutCalls2.sh /home/Scripts/000 $x > OUT.$i &
(( i++ ))
done
wait
cat OUT.* > OUT
rm OUT.*
您必须将脚本更改为输出到标准输出而不是文件,或使其接受要创建的输出文件的名称。
答案 1 :(得分:1)
通常你可以使用该文件来指定标准输出:
for x in /home/moleculo/x*; do ExtractOutCalls2.sh - $x & done
为避免混合输出,请使用GNU Parallel:
parallel ExtractOutCalls2.sh - {} ::: /home/moleculo/x* > output