2015-05-02 2 views
0

Привет мне нужно изменить эти имена файлов в папке:переименование файлов с использованием регулярных выражений в 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 

мне нужно сохранить ААА ****** (например 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

ответ

0

\(...\) ищет скобки, но не сохраняет его содержимое.

Я вижу три блока, чтобы получить захватил, поэтому я предлагаю следующее:

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

первого блок: AAA следует шесть символов.

2-й блок: _R, за которым следует один символ.

3-й блок: расширение .fastq.gz

Смежные вопросы