用正则表达式字符,bash重命名

时间:2019-09-18 11:17:01

标签: regex bash rename

我在使用正则表达式重命名某些文件时遇到了一个(基本)问题,但是我发现没有一种解决方案似乎有效……有什么可以帮助我识别错误或提出另一种(正确的)解决方案吗?谢谢!

这些是我的文件:

378_MO_1_S17_R1.fastq.gz
378_MO_1_S17_R2.fastq.gz
378_MO_2_S2_R1.fastq.gz
378_MO_2_S2_R2.fastq.gz

我想将它们重命名为此...

378_MO_1_r323_R1.fastq.gz
378_MO_1_r323_R2.fastq.gz
378_MO_2_r323_R1.fastq.gz
378_MO_2_r323_R2.fastq.gz

...使用此命令:

rename 's/_S[0-9]{1,}_/_r323_/g' *.gz

1 个答案:

答案 0 :(得分:1)

使用循环和参数扩展:

for fname in *.gz; do
  echo mv -- "$fname" "${fname%%_S*}_r323_${fname##*_}"
done

如果输出看起来不错,请删除echo