首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用正则表达式批量重命名*fastq.gz文件

使用正则表达式批量重命名*fastq.gz文件
EN

Stack Overflow用户
提问于 2018-06-27 00:25:47
回答 2查看 278关注 0票数 0

我正在尝试让正则表达式与rename一起工作;我在这里尝试了类似的回答问题的方法,但无法获得我想要的结果。

这些文件的命名方式如下:

代码语言:javascript
复制
SR1_S90_L001_R1_001.fastq.gz 
SR1_S90_L001_R2_001.fastq.gz
Rinc_S96_L001_R1_001.fastq.gz 
Rinc_S96_L001_R2_001.fastq.gz

我只想保留第一个下划线和_R1_或_R2_标记之前的信息,如下所示:

代码语言:javascript
复制
SR1_R1_.fastq.gz 
SR1_R2_.fastq.gz
Rinc_R1_.fastq.gz 
Rinc_R2_.fastq.gz
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-27 03:42:58

代码语言:javascript
复制
rename 's{^([^._]+)_[^.]*(_R[12]_)[^.]*}{$1$2}' *

其思想是匹配(并捕获)字符串的第一部分(1个或多个非._的字符),然后是_和0个或多个非.字符,然后是_R1__R2_ (我们也捕获这一部分),然后是0个或多个非.字符。

这应该匹配文件名的第一部分(在.之前),并将其替换为第一个和第二个捕获的子字符串,即第一个_和R1/R2标记之前的所有内容。

票数 2
EN

Stack Overflow用户

发布于 2018-06-27 02:59:06

以下代码在当前目录中执行所需的重命名操作:

代码语言:javascript
复制
opendir DIR, '.';
for (readdir DIR) {
  /^([^_]+).*(_(?:R1|R2)_)[^_]+(\.fastq\.gz)$/ or next;
  rename $_, "$1$2$3";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51047543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档