更改 .fasta 文件名

更改 .fasta 文件名

我有大约 2000 个 fasta 文件,其结构如下:

Name_ID#_Name2_ID1...2000.fasta

我想将文件名的顺序更改为:

Name2.Name_ID#_ID1...2000.fasta

有人对我如何实现这一目标有建议吗?

答案1

有多种方法可以解决这个问题。一种方法是:

#!/bin/bash

for i in *.fasta; do
    tokens=( $(echo "${i}" | sed -e 's/_/ /g') )
    newName="${tokens[2]}.${tokens[0]}_${tokens[1]}_${tokens[3]}'"

    echo "mv ${i} ${newName}"
done

.fasta该脚本循环遍历当前目录中以;结尾的每个文件。每次循环时,变量都${i}包含当前文件名。

接下来,该脚本将文件名中的sed下划线 ( ) 更改_为空格,并将其存储为标记数组。对于名为 的文件 Name_ID1_Name2_ID1000.fasta,您最终会得到:

tokens[0]='Name'
tokens[1]='ID1'
tokens[2]='Name2'
tokens[3]='ID1000.fasta'

接下来,脚本newName根据这些标记和您对所需订单的描述创建 。最后,脚本打印mv用于执行重命名的命令。

如果您运行该脚本,它会打印它将执行的操作。您可以检查它以确保它按照您想要的方式运行。如果是这样,那么您可以删除echo

mv "${i}" "${newName}"

并再次运行它。这样,它实际上就会执行重命名。

相关内容