我正在尝试让正则表达式与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
答案 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";
}