Wie kann ich im Mac-Terminal denselben Befehl für mehrere Dateien in einem Ordner ausführen?

Wie kann ich im Mac-Terminal denselben Befehl für mehrere Dateien in einem Ordner ausführen?

Wie kann ich im Mac-Terminal denselben Befehl für mehrere Dateien in einem Ordner ausführen? Die Dateien haben Namen wie 24538_7#1.fq, 24538_7#2.fq, 24538_7#3.fq, 24538_7#4.fqusw.

Die Befehle sind:

sed -n '\|@.*/1|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired1.fq
sed -n '\|@.*/2|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired2.fq

Da der Dateiname einen Zähler enthält, müssen die Dateinamen offensichtlich geändert werden.

Ich habe versucht, einen Befehl zu schreiben, bin aber beim Umbenennen der Datei hängen geblieben. Mein Versuch mit dem Befehl ist unten:

for file in 24538_7#*.fq; do sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file/fq/fq}"; done

(PS: Ich verwende MacOS)

Antwort1

Vorausgesetzt, dass alle Dateien ähnlich benannt sind, können Sie

for file in 24538_7#*.fq; do
    sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file%.fq}_paired1.fq"
    sed -n '\|@.*/2|{N;N;N;p;}' "$file" > "${file%.fq}_paired2.fq"
done

oder (um auf dem aufzubauen, was Sie bereits versucht haben)

for file in 24538_7#*.fq; do
    sed -n '\|@.*/1|{N;N;N;p;}' "$file" > "${file/.fq/_paired1.fq}"
    sed -n '\|@.*/2|{N;N;N;p;}' "$file" > "${file/.fq/_paired2.fq}"
done

Warnung: Dies funktioniert nur in Ihrer speziellen Situation und für Ihre speziellen Dateinamen.

verwandte Informationen