Cómo eliminar una parte particular del nombre de archivo para múltiples nombres de archivo en macOS

Cómo eliminar una parte particular del nombre de archivo para múltiples nombres de archivo en macOS

Tengo estos archivos en un directorio.

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

Quiero que la salida se vea así.

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

Respuesta1

Puedes intentar algo como cambiarles el nombre:

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

Respuesta2

Este script generará comandos de shell que realizan una serie de comandos 'mv' para realizar su tarea:

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

Ejecútelo una vez y examine el resultado. Si hay muchos archivos, es posible que desee utilizarlos lesspara revisar los comandos.

Si todo se ve bien, ejecute el comando nuevamente y canalice la salida a bash.

Funciona estableciendo la variable L en todo lo que queda del primer guión bajo en el nombre del archivo, más el guión bajo mismo. Luego forma una cadena R quitando la cadena en L del frente del nombre del archivo y quitándola hasta el siguiente guión bajo.

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"

información relacionada