2017-01-05 2 views
-2

У меня есть несколько файлов fastq.gz в каталоге. Я хочу удалить части каждого имени файла.Удалить часть имени нескольких файлов в Linux

Вот имена файлов:

RES_1448_001_S289_L001_R1_001.fastq.gz 
RES_1448_001_S289_L001_R2_001.fastq.gz 
RES_1448_012_S300_L001_R1_001.fastq.gz 
RES_1448_012_S300_L001_R2_001.fastq.gz 

Я хочу, чтобы удалить S и 3 цифры после нее. Я ожидаю, что это после удаления

RES_1448_001_R1_001.fastq.gz 
RES_1448_001_R2_001.fastq.gz 
RES_1448_012_R1_001.fastq.gz 
RES_1448_012_R2_001.fastq.gz 

Я задал подобный вопрос раньше, но посоветовал задать новый, чтобы покрыть точные требования я теперь.

Старый вопрос: Delete part of name of multiple files in Linux

+0

И что вы уже пробовали? Какие ошибки вы получаете? Пожалуйста, покажите свою работу. SO не является бесплатным веб-сайтом. – VM17

ответ

0

Использование rename.

rename 's/S\d{3}_//' *.fastq.gz

1

bash Используя это, regEx бы сделать трюк для вас.

#!/bin/bash 

for file in *.fastq.gz 
do 
    if [[ $file =~ ^(.*)S([[:digit:]]{3})_L([[:digit:]]{3})_(.*)$ ]] 
    then 
     start="${BASH_REMATCH[1]}" 
     end="${BASH_REMATCH[4]}" 
     mv -- "$file" "${start}${end}" 
    fi 
done 
Смежные вопросы