Como posso executar um mesmo comando no terminal Mac para vários arquivos em uma pasta?

Como posso executar um mesmo comando no terminal Mac para vários arquivos em uma pasta?

Como posso executar o mesmo comando no terminal mac para vários arquivos em uma pasta? Os arquivos são nomeados como 24538_7#1.fq, 24538_7#2.fq, e assim por diante 24538_7#3.fq.24538_7#4.fq

Os comandos são:

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

Como o nome do arquivo envolve um contador, obviamente os nomes dos arquivos precisam ser alterados.

Eu estava tentando escrever o comando, mas não consegui renomear o arquivo. Meu esforço para o comando está abaixo:

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

(PS- eu uso MacOS)

Responder1

Supondo que todos os arquivos tenham nomes semelhantes, você pode usar

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

ou (para desenvolver o que você já tentou)

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

Aviso: Isso funcionará apenas para sua situação específica e para nomes de arquivos específicos.

informação relacionada