В исходном имени файла есть несколько символов подчеркивания, но вы хотите удалить их только со второго до последнего подчеркивания. В этом случае попробуйте:
mv "$f" "${f%_*_*}.fastq.gz"
Рассмотрим каталог с этими файлами:
$ ls -1
C14_1_S1_R1_001_copy1.fastq.gz
C15_1_S1_R1_001_copy1.fastq.gz
Если мы запустим наш l oop, а затем запустим новый ls
, мы увидим измененные имена файлов:
$ for f in ./*.fastq.gz; do mv "$f" "${f%_*_*}.fastq.gz"; done
$ ls -1
C14_1_S1_R1.fastq.gz
C15_1_S1_R1.fastq.gz
Ключ здесь в том, что ${var%word}
- это удаление суффикса , и он соответствует самому короткому возможному суффиксу, который соответствует глобусу word
. Таким образом, ${f%_*_*}
удаляет предпоследний символ подчеркивания и все, что после него. ${f%_*_*}.fastq.gz
удаляет предпоследний символ подчеркивания и все после него, а затем восстанавливает желаемый суффикс .fastq.gz
.