给定一组文件,我需要传递2个参数,并根据输入文件名将输出定向到新命名的文件。输入列表遵循定义的格式:S1_R1.txt,S1_R2.txt; S2_R1.txt,S2_R2.txt; S3_R1.txt,S3_R2.txt等。第一个数字加1,每个数字都有一个R1和相应的R2。
输出文件是每个S#-pair的组合,应该分别命名为,例如, S1_interleave.txt,S3_interleave.txt,S3_interleave.txt等
以下作品可以打印到屏幕
找到S * R * .txt -maxdepth 0 | xargs -n 2 python interleave.py
如何利用输入文件名作为输出?
答案 0 :(得分:0)
只是为了让它更有趣:让我们假设文件是gzip压缩的(通常是成对的结束读取),你也希望结果是gzip压缩的:
parallel --xapply 'python interleave.py <(zcat {1}) <(zcat {2}) |gzip > {=1 s/_R1.txt.gz/_interleave.txt.gz/=}' ::: *R1.txt.gz ::: *R2.txt.gz
您需要预先发布GNU Parallel才能执行此操作http://git.savannah.gnu.org/cgit/parallel.git/snapshot/parallel-1a1c0ebe0f79c0ada18527366b1eabeccd18bdf5.tar.gz(或等待发布20140722)。
根据要求它更简单(但你仍然需要预发布):
parallel --xapply 'python interleave.py {1} {2} > {=1 s/_R1.txt/_interleave.txt/=}' ::: *R1.txt ::: *R2.txt