Como posso executar um mesmo comando no mac terminal para múltiplos arquivos em uma pasta?

1

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

Os comandos são:

sed -n '\|@.*/1|{N;N;N;p;}' 24538_7#2.fq > 24538_7#2_paired1.fq e 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 fiquei preso ao 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 o MacOS)

    
por Akhil Verma 31.05.2018 / 20:00

1 resposta

1

Supondo que todos os arquivos são nomeados de forma semelhante, 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 aproveitar 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 seus nomes de arquivo específicos.

    
por 31.05.2018 / 20:26