forループを使用して複数のfastqファイルの名前を変更する方法

forループを使用して複数のfastqファイルの名前を変更する方法

次のファイルがいくつかあります。

sub_TK273759_R1.fastq
sub_TK273759_R2.fastq
sub_TK273763_R1.fastq
sub_TK273763_R2.fastq
sub_TK273766_R1.fastq
sub_TK273766_R1.fastq

次のようにすべてのファイルの名前を変更するには:

TK273759_R1.fastq
TK273759_R2.fastq
TK273763_R1.fastq
TK273763_R2.fastq
TK273766_R1.fastq
TK273766_R2.fastq

答え1

2つのバージョンがありますrename。使用しているバージョンに応じて、次のいずれかが適しています。

rename sub_ '' sub_*        # rename -V -> "rename from util-linux 2.33.1"
rename 's/^sub_//' sub_*    # rename -V -> "Unknown option: V"

ターゲットファイル名がすでに存在する場合、これら2つは反対です。

あるいは、ループを使用することもできますが、はるかに効率的ではありません。

for f in sub_*
do
    mv "$f" "${f#sub_}"
done

ターゲットファイル名がすでに存在する場合は自動的に上書きされます。

関連情報