使用正则表达式批量重命名 *fastq.gz 个文件
Batch rename *fastq.gz files using regular expression
我正在尝试使用正则表达式 rename
;我在这里尝试过类似回答问题的方法,但无法得到我想要的结果。
文件是这样命名的:
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_标签之前的信息,如下所示:
SR1_R1_.fastq.gz
SR1_R2_.fastq.gz
Rinc_R1_.fastq.gz
Rinc_R2_.fastq.gz
在当前目录下进行如下重命名:
opendir DIR, '.';
for (readdir DIR) {
/^([^_]+).*(_(?:R1|R2)_)[^_]+(\.fastq\.gz)$/ or next;
rename $_, "";
}
rename 's{^([^._]+)_[^.]*(_R[12]_)[^.]*}{}' *
思路是匹配(并捕获)字符串的第一部分(1个或多个不是.
或_
的字符),后面是_
和0或更多非 .
字符,然后是 _R1_
或 _R2_
(我们也捕获了这部分),然后再次是 0 个或更多非 .
字符。
这应该匹配文件名的第一部分(在 .
之前)并将其替换为第一个和第二个捕获的子字符串,即第一个 _
和 R1/R2 之前的所有内容标签。
我正在尝试使用正则表达式 rename
;我在这里尝试过类似回答问题的方法,但无法得到我想要的结果。
文件是这样命名的:
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_标签之前的信息,如下所示:
SR1_R1_.fastq.gz
SR1_R2_.fastq.gz
Rinc_R1_.fastq.gz
Rinc_R2_.fastq.gz
在当前目录下进行如下重命名:
opendir DIR, '.';
for (readdir DIR) {
/^([^_]+).*(_(?:R1|R2)_)[^_]+(\.fastq\.gz)$/ or next;
rename $_, "";
}
rename 's{^([^._]+)_[^.]*(_R[12]_)[^.]*}{}' *
思路是匹配(并捕获)字符串的第一部分(1个或多个不是.
或_
的字符),后面是_
和0或更多非 .
字符,然后是 _R1_
或 _R2_
(我们也捕获了这部分),然后再次是 0 个或更多非 .
字符。
这应该匹配文件名的第一部分(在 .
之前)并将其替换为第一个和第二个捕获的子字符串,即第一个 _
和 R1/R2 之前的所有内容标签。