.fasta ファイル名の変更

.fasta ファイル名の変更

次の構造を持つ約2000のfastaファイルがあります。

Name_ID#_Name2_ID1...2000.fasta

ファイル名の順序を次のように変更したいと思います。

Name2.Name_ID#_ID1...2000.fasta

誰でも私がこれを達成する方法についての提案はありますか?

答え1

この問題を解決する方法はいくつかあります。 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}"

もう一度実行してみてください。これにより、実際に名前変更が行われます。

関連情報