如何重命名位于 [括号] 中每个文件内的表达式的 *.faa 文件名?

如何重命名位于 [括号] 中每个文件内的表达式的 *.faa 文件名?

我想将文件名 *.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一旦您确信它正在做正确的事情,就将其删除。

相关内容