在linux中使用regex重命名文件

时间:2015-05-02 20:38:43

标签: linux

您好我需要在文件夹中更改这些文件名:

dingo__AAA311P02_2845__L7_ACTTGA_L007_R1_001.fastq.gz
lala_bros__AAA000M11_3289__L2_ACTGAT_L002_R2_001.fastq.gz
nice__AAA827M10_2860__L7_ACTGAT_L007_R2_001.fastq.gz

我需要保留AAA ******(例如AAA255P02)并保留R1或R2和扩展名fastq.gz

理想情况下,我想得到这些:
AAA311P02_R1.fastq.gz AAA000M11_R2.fastq.gz AAA827M10_R2.fastq.gz

我尝试过使用 rename 's/^.*\(AAA[1-9][1-9][1-9][A-Z][1-9][1-9]\).*$/\$1/g' *.fastq.gz

1 个答案:

答案 0 :(得分:0)

\(...\)搜索括号,但不捕获其内容。

我看到有三个块被捕获,所以我建议如下:

rename 's/^.*(AAA.{6}).*(_R.).*(\.fastq.gz)/$1$2$3/' *.fastq.gz

第一个阻止:AAA后跟六个字符。

第二个区块:_R后跟一个字符。

第3块:扩展名.fastq.gz