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

时间:2018-06-26 16:25:47

标签: regex linux perl rename fastq

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

文件的命名如下:

rename

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

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

2 个答案:

答案 0 :(得分:2)

rename 's{^([^._]+)_[^.]*(_R[12]_)[^.]*}{$1$2}' *

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

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

答案 1 :(得分:0)

以下操作将在当前目录中重命名:

opendir DIR, '.';
for (readdir DIR) {
  /^([^_]+).*(_(?:R1|R2)_)[^_]+(\.fastq\.gz)$/ or next;
  rename $_, "$1$2$3";
}