在中bash
,我尝试查找文件列表并将它们通过管道传输到parallel
。
find *.fasta | parallel "Gblocks {} -b2=$(( "$(cat {} | grep \> | wc -l)" / 2 + 1 ))"
其中Gblocks
是单线程可执行文件,并且标志-b2
设置一个基于>
引用文件中的字符数的变量。
我的问题是它cat {}
不起作用。我很确定我知道它为什么不起作用:该{}
函数是 的一部分parallel
,我正尝试在命令中引用它之内并行命令。我只是不知道如何真正让它发挥作用。
如果第一个文件find
是myfile.fasta
,那么命令应该是这样的:
find *.fasta | parallel "Gblocks myfile.fasta -b2=$(( "$(cat myfile.fasta | grep \> | wc -l)" / 2 + 1 ))"
编辑:正如@KamilMaciorowski 所建议的,我需要将第一组双引号更改为单引号,因此:
find *.fasta | parallel 'Gblocks {} -b2=$(( "$(cat {} | grep \> | wc -l)" / 2 + 1 ))'