macOSの複数のファイル名からファイル名の特定の部分を削除する方法

macOSの複数のファイル名からファイル名の特定の部分を削除する方法

これらのファイルをディレクトリに入れました。

Mabel-A10_GTAGAGGA_L001_R1_001.fastq.gz
Mabel-A5_GGACTCCT_L001_R1_001.fastq.gz
Mabel-A11_GCTCATGA_L001_R1_001.fastq.gz
Mabel-A6_TAGGCATG_L001_R1_001.fastq.gz

出力が次のようになります。

Mabel-A10_L001_R1_001.fastq.gz
Mabel-A5_L001_R1_001.fastq.gz
Mabel-A11_L001_R1_001.fastq.gz
Mabel-A6_L001_R1_001.fastq.gz

答え1

名前を変更できます。

for i in *
do
o=$(echo $i|awk -F_ '{print $1,$3,$4,$5}')
mv "$i" "$o"
done

答え2

このスクリプトは、操作を実行するために一連の "mv"コマンドを実行するシェルコマンドを出力します。

for FILE in *.fastq.gz
do
    L="${FILE%%_*}_"
    R="${FILE#${L}*_}";
    printf 'mv -vi "%s" "%s"\n' "$FILE" "$L$R"
done

一度実行し、出力を確認してください。ファイルが多い場合は、lessviewコマンドを使用する必要があります。

すべてが正常に見える場合は、コマンドを再実行して出力をbash

ファイル名の最初の下線の左側にあるすべての項目と、下線自体に変数Lを設定することで機能します。次に、ファイル名の前からLの文字列を削除し、次の下線までさらに削除して文字列Rを形成します。

mv -vi "Mabel-A10_GTAGAGGA_L001_R1_001.fastq.gz" "Mabel-A10_L001_R1_001.fastq.gz"
mv -vi "Mabel-A11_GCTCATGA_L001_R1_001.fastq.gz" "Mabel-A11_L001_R1_001.fastq.gz"
mv -vi "Mabel-A5_GGACTCCT_L001_R1_001.fastq.gz" "Mabel-A5_L001_R1_001.fastq.gz"
mv -vi "Mabel-A6_TAGGCATG_L001_R1_001.fastq.gz" "Mabel-A6_L001_R1_001.fastq.gz"

関連情報