
次のファイルのリストがあります。
11F.fastq.gz
11R.fastq.gz
12F.fastq.gz
12R.fastq.gz
このファイル名を次のように変更したいと思います。
11_S11_L001_R1_001.fastq.gz
11_S11_L001_R2_001.fastq.gz
12_S12_L001_R1_001.fastq.gz
12_S12_L001_R2_001.fastq.gz
私はreanme
次のように試しました
rename 's/F.fastq/_S_L001_R1_001.fastq/' *.gz
rename 's/R.fastq/_S_L001_R2_001.fastq./' *.gz
しかし、「S」(この場合は11と12)の後にファイル番号を追加する方法がわかりません。どんなアドバイスも本当にありがとうございます。
答え1
zsh
独自のバッチ名変更ツールが組み込まれており、zmv
自動読み込み機能として使用できます。
autoload -Uz zmv
typeset -A map=(F 1 R 2)
zmv -n '(<->)([FR])(.fastq.gz)' '${1}_S${1}_L001_R$map[$2]_001$3'
(-n
満足した場合は削除(模擬実行))。
または、スカラーを使用しmap=FR
てその文字列の文字インデックスで置き換えます。
map=FR
zmv -n "(<->)([$map])(.fastq.gz)" '${1}_S${1}_L001_R$map[(Ie)$2]_001$3'
答え2
そしてPerlのrename
コマンドライン、変数部分((...)
)をキャプチャし、逆参照($1
)を使用できます。
rename -n 's/(\d+)F\.fastq/$1_S$1_L001_R1_001.fastq/' *F.fastq.gz
rename -n 's/(\d+)R\.fastq/$1_S$1_L001_R2_001.fastq/' *R.fastq.gz
-n
出力が満足な場合は削除してください。