Как выполнить одну и ту же команду в терминале Mac для нескольких файлов в папке?

Как выполнить одну и ту же команду в терминале Mac для нескольких файлов в папке?

Как запустить одну и ту же команду в терминале Mac для нескольких файлов в папке? Файлы называются как 24538_7#1.fq, 24538_7#2.fq, 24538_7#3.fq, 24538_7#4.fqи так далее.

Команды следующие:

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

Поскольку имя файла включает в себя счетчик, очевидно, что имена файлов необходимо изменить.

Я пытался написать команду, но застрял на переименовании файла. Мои усилия для команды приведены ниже:

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

(P.S. Я использую MacOS)

решение1

Предполагая, что все файлы имеют одинаковые имена, вы можете использовать

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

или (продолжить то, что вы уже пробовали)

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

Предупреждение: Это будет работать только для вашей конкретной ситуации и для ваших конкретных имен файлов.

Связанный контент