我想将文件名 *.faa(典型名称是 Protein-176.faa)重命名为位于每个 .faa 文件内括号中的名称 [Escherichia coli DSM123]。
例如文件蛋白质-44.faa包括第一行:
>ABI60899.1 Multidrug resistance protein B [Granulibacter bethesdensis CGDNIH1]
MVRQGRPSQSREQEDISEPGTQGRGWMQARHVHHWRFHHRRAVHKDLMTQPRSSRPVSSRILALIVSAALFMELMDGTIL
ATALPQMAQSFDVAPLQMSVALTAYLLSLAVFIPASGWMADRFGSRRIFMGAIALFVTGSMVCGMANALPEMVIARLVQG
AGGAMMVPVGRLLLLRNVPRHELVSAIAWMTIPATLGPVLGPPVGGFLTTWLSWRWIFYINLPIGLIGMGLAARFVPNVT
EAELRPLDVKGLLLSGTALASLLWAMETLGRGPSGTDGMALSSAAILTLIGLGSGWLYLRHSRTIPHPILNPMLMRIRTF
RLSVLGGACSRVVAGAMPFLLPMTMQLGMGMSAAESGSLTFVGAAGSLLIRPWAAGILRRFGFRRVMIWNGALSSTAVLL
CATFQPSWPHGWFFLVLAPAGLFQALQFIAYNTIAYADVPRERMSEATSFYTTFQQMTLSAGICIAGISVSLSMLAGPRT
QPDMTDFATGFVTIATISALAILCASRLNSTDGQDLSRKA
>ABI60900.1 Uroporphyrinogen decarboxylase [Granulibacter bethesdensis CGDNIH1]
MNKPILRVLRGEALPVPPVWLMRQAGRYLPEYREVRAKAGSFLGLATHPEWAAEVTLQPIRRFGMDAAILFSDILMLPWA
并应重命名为颗粒杆菌 CGDNIH1.faa
我文件夹中有数百个后缀为 .faa 的文件,我很厌烦手动尝试。一定有一种方法可以快速而优雅地完成它。
这里提供的解决方案不起作用:https://www.biostars.org/p/444704/
感谢您的帮助!谢谢!
答案1
您链接的解决方案只是挑选出文件的第一行(head-1
),使用 选择第一个以空格分隔的字符串cut
,然后>
使用删除 FASTA 标题标记tr
。
如果您想做更复杂的事情,您将需要修改管道 - 例如使用sed
:
$ for f in *.faa; do echo mv --no-clobber -- "$f" "$(sed -E 's/.*\[([^]]*)\]/\1.faa/;q' "$f")"; done
mv --no-clobber -- protein-44.faa Granulibacter bethesdensis CGDNIH1.faa
echo
一旦您确信它正在做正确的事情,就将其删除。