【问题标题】:Rename with regex characters, bash用正则表达式重命名,bash
【发布时间】:2020-01-19 08:06:46
【问题描述】:

我在使用正则表达式重命名某些文件时遇到了一个(基本)问题,但我发现的解决方案似乎都不起作用......任何可以帮助我识别错误或提出另一个(正确)解决方案的方法吗?谢谢!

这些是我的文件:

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

【问题讨论】:

  • 如果你有基于 perl 的重命名命令,你的命令就可以工作。检查man rename 看看你有什么版本的重命名。有多种实现

标签: regex bash rename


【解决方案1】:

使用循环和参数扩展:

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

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

【讨论】:

    猜你喜欢
    • 2016-08-22
    • 2011-05-31
    • 2018-11-12
    • 2013-08-06
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2016-03-20
    相关资源
    最近更新 更多