So entfernen Sie einen bestimmten Teil des Dateinamens für mehrere Dateinamen in macOS

So entfernen Sie einen bestimmten Teil des Dateinamens für mehrere Dateinamen in macOS

Ich habe diese Dateien in einem Verzeichnis.

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

Ich möchte, dass die Ausgabe so aussieht.

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

Antwort1

Sie können beispielsweise versuchen, sie umzubenennen:

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

Antwort2

Dieses Skript gibt Shell-Befehle aus, die eine Reihe von „mv“-Befehlen ausführen, um Ihre Aufgabe zu erledigen:

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

Führen Sie das einmal aus und prüfen Sie die Ausgabe. Wenn viele Dateien vorhanden sind, können Sie lessdie Befehle überprüfen.

Wenn alles gut aussieht, führen Sie den Befehl erneut aus und leiten Sie die Ausgabe an weiter bash.

Dies funktioniert, indem die Variable L auf alles links vom ersten Unterstrich im Dateinamen plus den Unterstrich selbst gesetzt wird. Anschließend wird die Zeichenfolge R gebildet, indem die Zeichenfolge in L vom Anfang des Dateinamens entfernt wird und weiter bis zum nächsten Unterstrich entfernt wird.

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"

verwandte Informationen