古いファイル名の一部を含むバッチの名前変更ファイル名

古いファイル名の一部を含むバッチの名前変更ファイル名

次のファイルのリストがあります。

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'

おすすめ記事