2016-11-23 106 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位數字和L001。我希望這種去除後

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 

非常感謝您的幫助

+1

$ {thefilename:1:13} $ {thefilename:24:15},如果你的文件名是在該確切類型格式的已示出。 –

回答

0

隨着bash參數擴展:

for file in *.fastq.gz; do 
    start=${file%%_*} ## Gets only the portion before first `_` 
    end=${file#*_*_*_*} ## Gets the portion after 3 `_`s from start 
    echo mv -- "$file" "${start}_${end}" 
done 

這將只是echomv命令將被運行,如果滿意取出echo實際爲mv -ing動作:

for file in *.fastq.gz; do 
    start=${file%%_*} 
    end=${file#*_*_*_*} 
    mv -- "$file" "${start}_${end}" 
done 
+0

非常感謝。 – Bala

+0

如何選擇前3'部分 - ' – Bala

+0

@Bala請問這是一個新問題嗎? – heemayl

-1

隨着perl

perl -ape 's{_S\d\d\d_L001}{}'