我想用生物体名称(存储在文件中)和标识符(文件名的一部分)重命名FASTA文件 .
所有文件在文件名和存储数据中具有相同的格式,每个文件只有一个FASTA头和相应的序列 .
原始文件名:
$ head GCF_000008205.1_ASM820v1_genomic.fna
>NC_007295.1 Mycoplasma hyopneumoniae J, complete genome
CCAAAATCAACTTTATTAAATGTGCTAAATAAAGTTGATAAAATGTTTGCAAAAACATTTTTGTTGTTTTAAACAAAACA
AATTGATTTAAAAATTATACTACAAAATTAAAGGAAAATTTATAAAATGCAAACAAATAAAAATAATTTAAAGGTTAGAA
CACAGCAAATTAGACAACAAATTGAAAATTTATTAAATGATCGAATGTTGTATAACAACTTTTTTAGCACAATTTATGTA
...
我想重命名文件名,使用文件名中的程序集标识符(GCF_000008205.1),以及FASTA Headers (Mycoplasma hyopneumoniae)的第二和第三个单词:
Mycoplasma_hyopneumoniae_GCF_000008205.1.fna
我试过这个:
for fname in *.fna; do
mv -- "$fname" \
"$(awk 'NR==1{printf("%s_%s_%s\n",$2,$3,substr($1,2));exit}' "$fname")".fna
done
结果:
Mycoplasma_hyopneumoniae_NC_007295.1.fna
但结果显示了有机体名称前面的代码,而不是我感兴趣的标识符,它是原始文件的名称 .
谢谢!
1 回答
以下思路有效,但前提是每个文件的格式都与示例中的格式相同 . 在包含所有文件的目录中,执行以下操作:
我建议在尝试之前先创建一个备份文件夹,以防你有一些格式不同的文件 .