免责声明:这是我在biostars.org上问到的有关并行和写入文件的一个更普遍的问题。
当我顺序运行一个程序(obisplit
来自obitools
package)时,它会读取一个文件并根据原始文件中的某个条件(此处不重要)创建多个文件:
input_file.fastq
|____ output_01.fastq
|____ output_02.fastq
|____ output_03.fastq
但是,当我分割输入文件并并行运行它们时(来自ubuntu repo的版本:20141022),
find . * | grep -P "^input_file" | parallel -j+3 obisplit -p output_{/.}_ -t variable_to_split_on {/}
我希望得到文件
input_file_a.fastq
|____ output_input_file_a_01.fastq
|____ output_input_file_a_02.fastq
|____ output_input_file_a_03.fastq
input_file_b.fastq
|____ output_input_file_b_01.fastq
|____ output_input_file_b_02.fastq
|____ output_input_file_b_03.fastq
input_file_c.fastq
|____ output_input_file_c_01.fastq
|____ output_input_file_c_02.fastq
|____ output_input_file_c_03.fastq
但是输出仅打印到控制台。
是否存在某种内在的parallel
因素导致该打印正常进行,或者这可能obisplit
是出于某种原因的行为方式?有没有办法说服每个核心命令parallel
打印到特定文件而不是控制台?
obisplit
如果重定向输出,则听起来好像行为有所不同。
您可以要求GNU Parallel输出到文件:
seq 10 | parallel --results output_{} echo this is input {} >/dev/null
(或者,如果您的版本较旧:
seq 10 | parallel echo this is input {} '>' output_{}
)
它会创建output_#
,output_#.err
,output_#.seq
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句