运行 对具有匹配字符串的文件对(不同文件类型)的命令
Run command on pair of files (different file types) with matching character string
我有一个文件列表:
catfish.fa
polar.fa
catfish.ids.txt
polar.ids.txt
我想运行这个命令为每个文件匹配一个字符串。例如,我想 运行 这个:
cat catfish.fa | seqkit grep -f catfish.ids.txt > catfish.output.fa
同样...
cat polar.fa | seqkit grep -f polar.ids.txt > polar.output.fa
我如何运行 为目录中的每个文件对并行执行此命令?感谢您的帮助!
与bash的Parameter Expansion:
for file in *.fa; do seqkit grep -f "${file%%.*}.id.txt" >"${file%%.*}.output.fa" <"$file" & done
#!/bin/bash
for f in *.fa
do
filename="${f%.*}"
if [ -e ${f}.ids.txt ]
then
cat ${f}.fa | seqkit grep -f ${f}.ids.txt >${f}.output.fa
fi
done
filename="${f%.*}"
提取不带扩展名的文件名,参见 here 的解释。
if
的目的是仅挑出具有相应 .ids.txt
文件的以 .fa
结尾的文件。
如果您希望每一对的所有内容都 运行 并行,请在 cat ${f}.fa ...
文件的末尾附加一个 &
。 (注意不要生成太多并行任务!)
这将 运行 每个 CPU 内核并行执行一项作业:
parallel 'cat {} | seqkit grep -f {.}.ids.txt > {.}.output.fa' ::: *fa
我可以建议您先 运行 和 --dry-run
,这样您就可以看到 运行 会是什么?
parallel --dry-run 'cat {} | seqkit grep -f {.}.ids.txt > {.}.output.fa' ::: *fa
还可以考虑花 20 分钟阅读 GNU Parallel 2018 一书的第 1+2 章(打印:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html online: https://doi.org/10.5281/zenodo.1146014)。您的命令行会因此爱上您。
我有一个文件列表:
catfish.fa
polar.fa
catfish.ids.txt
polar.ids.txt
我想运行这个命令为每个文件匹配一个字符串。例如,我想 运行 这个:
cat catfish.fa | seqkit grep -f catfish.ids.txt > catfish.output.fa
同样...
cat polar.fa | seqkit grep -f polar.ids.txt > polar.output.fa
我如何运行 为目录中的每个文件对并行执行此命令?感谢您的帮助!
与bash的Parameter Expansion:
for file in *.fa; do seqkit grep -f "${file%%.*}.id.txt" >"${file%%.*}.output.fa" <"$file" & done
#!/bin/bash
for f in *.fa
do
filename="${f%.*}"
if [ -e ${f}.ids.txt ]
then
cat ${f}.fa | seqkit grep -f ${f}.ids.txt >${f}.output.fa
fi
done
filename="${f%.*}"
提取不带扩展名的文件名,参见 here 的解释。
if
的目的是仅挑出具有相应 .ids.txt
文件的以 .fa
结尾的文件。
如果您希望每一对的所有内容都 运行 并行,请在 cat ${f}.fa ...
文件的末尾附加一个 &
。 (注意不要生成太多并行任务!)
这将 运行 每个 CPU 内核并行执行一项作业:
parallel 'cat {} | seqkit grep -f {.}.ids.txt > {.}.output.fa' ::: *fa
我可以建议您先 运行 和 --dry-run
,这样您就可以看到 运行 会是什么?
parallel --dry-run 'cat {} | seqkit grep -f {.}.ids.txt > {.}.output.fa' ::: *fa
还可以考虑花 20 分钟阅读 GNU Parallel 2018 一书的第 1+2 章(打印:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html online: https://doi.org/10.5281/zenodo.1146014)。您的命令行会因此爱上您。