Pular para o conteúdo

Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 26/07/2019 - 15:08h

Oi Pessoal,

Eu preciso de ajuda para montar um script que rode um comando em loop com vários pares de arquivos que estão na mesma pasta. Cada par de arquivo tem o mesmo nome com exceção de uma parte do nome deles, desta forma: arquivoY_RX_001.gz - os pares serão R1 ou R2.

O comando é o seguinte: mitofinder -j <arqivoY> -1 arquivoY_R1_001.gz -2 arquivoY_R2_001.gz -r mitogenoma -o 5 -p 4 -m 30000

Se alguém puder me ajudar a montar este script será ótimo!

Abraços

Responder tópico

2. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta

Melhor resposta

Enviado em 29/07/2019 - 08:37h

Uma solução usando apenas o shell.

for arq_r1 in *_R1_001.gz; do
nome_base="${arq_r1%_R1_001.gz}" # Remove o sufixo “_R1_001.gz”.
arq_r2="${nome_base}_R2.001.gz" # Aplica o sufixo “_R2_001.gz” ao nome base.
mitofinder -j "$nome_base" -1 "$arq_r1" -2 "$arq_r2" -r mitogenoma -o 5 -p 4 -m 30000
done


Opcionalmente, você pode querer confirmar se o nome com sufixo “_R2_001.gz” existe, antes de invocar o programa mitofinder. Nesse caso, você pode troca a linha que chama o programa pela seguinte.

  [ -e "$arq_r2" ] && mitofinder -j "$nome_base" -1 "$arq_r1" -2 "$arq_r2" -r mitogenoma -o 5 -p 4 -m 30000 



... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 26/07/2019 - 17:13h


fvfreitas escreveu:

Oi Pessoal,
Eu preciso de ajuda para montar um script que rode um comando em loop com vários pares de arquivos que estão na mesma pasta.
Cada par de arquivo tem o mesmo nome com exceção de uma parte do nome deles, desta forma: arquivoY_RX_001.gz - os pares serão R1 ou R2.
O comando é o seguinte: mitofinder -j <arqivoY> -1 arquivoY_R1_001.gz -2 arquivoY_R2_001.gz -r mitogenoma -o 5 -p 4 -m 30000
Se alguém puder me ajudar a montar este script será ótimo!
Abraços
Att.: Marcelo Oliver
Boa tarde Freitas.
Existe um padrão para o nome dos arquivos?
Tipo:
arquivoY_R1_001.gz -2 arquivoY_R2_001.gz
arquivoY_R1_002.gz -2 arquivoY_R2_002.gz
arquivoY_R1_003.gz -2 arquivoY_R2_003.gz
.
.
.
Att.: Marcelo Oliver

4. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 26/07/2019 - 22:13h

msoliver escreveu:


fvfreitas escreveu:

Oi Pessoal,
Eu preciso de ajuda para montar um script que rode um comando em loop com vários pares de arquivos que estão na mesma pasta.
Cada par de arquivo tem o mesmo nome com exceção de uma parte do nome deles, desta forma: arquivoY_RX_001.gz - os pares serão R1 ou R2.
O comando é o seguinte: mitofinder -j <arqivoY> -1 arquivoY_R1_001.gz -2 arquivoY_R2_001.gz -r mitogenoma -o 5 -p 4 -m 30000
Se alguém puder me ajudar a montar este script será ótimo!
Abraços
Att.: Marcelo Oliver
Boa tarde Freitas.
Existe um padrão para o nome dos arquivos?
Tipo:
arquivoY_R1_001.gz -2 arquivoY_R2_001.gz
arquivoY_R1_002.gz -2 arquivoY_R2_002.gz
arquivoY_R1_003.gz -2 arquivoY_R2_003.gz
.
.
.
Att.: Marcelo Oliver


Oi Marcelo,
É isso mesmo, o nome dos arquivos segue esta lógica, arquivoY_R1_001.gz e arquivoY_R2_001.gz.

Obrigado,
Felipe.

5. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 26/07/2019 - 23:45h

E como você detecta um arquivo novo? Você faz alguma coisa com os arquivos antigos depois de os processar?


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

6. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta

Enviado em 27/07/2019 - 16:42h

fvfreitas escreveu:

msoliver escreveu:


fvfreitas escreveu:

Oi Pessoal,
Eu preciso de ajuda para montar um script que rode um comando em loop com vários pares de arquivos que estão na mesma pasta.
Cada par de arquivo tem o mesmo nome com exceção de uma parte do nome deles, desta forma: arquivoY_RX_001.gz - os pares serão R1 ou R2.
O comando é o seguinte: mitofinder -j <arqivoY> -1 arquivoY_R1_001.gz -2 arquivoY_R2_001.gz -r mitogenoma -o 5 -p 4 -m 30000
Se alguém puder me ajudar a montar este script será ótimo!
Abraços
Att.: Marcelo Oliver
Boa tarde Freitas.
Existe um padrão para o nome dos arquivos?
Tipo:
arquivoY_R1_001.gz -2 arquivoY_R2_001.gz
arquivoY_R1_002.gz -2 arquivoY_R2_002.gz
arquivoY_R1_003.gz -2 arquivoY_R2_003.gz
.
.
.
Att.: Marcelo Oliver


Oi Marcelo,
É isso mesmo, o nome dos arquivos segue esta lógica, arquivoY_R1_001.gz e arquivoY_R2_001.gz.

Obrigado,
Felipe.

Só para esclarecer.
R1 R2 forma o par.
O que diferencia os pares é a numeração?
Tipo:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoY_R1_002.gz e arquivoY_R2_002.gz. # PAR 2
arquivoY_R1_003.gz e arquivoY_R2_003.gz. # PAR 3
.....

Att.: Marcelo Oliver

7. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 28/07/2019 - 09:12h

Oi Marcelo,
Na verdade o que muda no nome dos pares é a primiera parte do nome:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoX_R1_001.gz e arquivoX_R2_001.gz. # PAR 2
arquivoZ_R1_001.gz e arquivoZ_R2_001.gz. # PAR 3

Obrigado pela ajuda!

Abraço,
Felipe

msoliver escreveu:

fvfreitas escreveu:

msoliver escreveu:


fvfreitas escreveu:

Oi Pessoal,
Eu preciso de ajuda para montar um script que rode um comando em loop com vários pares de arquivos que estão na mesma pasta.
Cada par de arquivo tem o mesmo nome com exceção de uma parte do nome deles, desta forma: arquivoY_RX_001.gz - os pares serão R1 ou R2.
O comando é o seguinte: mitofinder -j <arqivoY> -1 arquivoY_R1_001.gz -2 arquivoY_R2_001.gz -r mitogenoma -o 5 -p 4 -m 30000
Se alguém puder me ajudar a montar este script será ótimo!
Abraços
Att.: Marcelo Oliver
Boa tarde Freitas.
Existe um padrão para o nome dos arquivos?
Tipo:
arquivoY_R1_001.gz -2 arquivoY_R2_001.gz
arquivoY_R1_002.gz -2 arquivoY_R2_002.gz
arquivoY_R1_003.gz -2 arquivoY_R2_003.gz
.
.
.
Att.: Marcelo Oliver


Oi Marcelo,
É isso mesmo, o nome dos arquivos segue esta lógica, arquivoY_R1_001.gz e arquivoY_R2_001.gz.

Obrigado,
Felipe.

Só para esclarecer.
R1 R2 forma o par.
O que diferencia os pares é a numeração?
Tipo:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoY_R1_002.gz e arquivoY_R2_002.gz. # PAR 2
arquivoY_R1_003.gz e arquivoY_R2_003.gz. # PAR 3
.....

Att.: Marcelo Oliver



8. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 28/07/2019 - 16:33h


fvfreitas escreveu:

Oi Marcelo,
Na verdade o que muda no nome dos pares é a primiera parte do nome:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoX_R1_001.gz e arquivoX_R2_001.gz. # PAR 2
arquivoZ_R1_001.gz e arquivoZ_R2_001.gz. # PAR 3

Obrigado pela ajuda!
Abraço,
Felipe
Felipe, essa primeira parte do nome do arquivo, segue um padrão, tem alguma uma lógica...

Att.: Marcelo Oliver

9. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 28/07/2019 - 16:59h

msoliver escreveu:


fvfreitas escreveu:

Oi Marcelo,
Na verdade o que muda no nome dos pares é a primiera parte do nome:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoX_R1_001.gz e arquivoX_R2_001.gz. # PAR 2
arquivoZ_R1_001.gz e arquivoZ_R2_001.gz. # PAR 3

Obrigado pela ajuda!
Abraço,
Felipe
Felipe, essa primeira parte do nome do arquivo, segue um padrão, tem alguma uma lógica...

Att.: Marcelo Oliver


Oi Marcelo,
O nome dos arquivos esta desse jeito aqui: 15864X6_190307_D00550_0549_BCD5KUANXX_S85_L001_R2_001.gz, variam, alem do R1 e R2, a primeira parte do nome, neste caso 15864X6 e a sexta, neste caso S85.
Seguem dois exemplos de pares:
15864X60_190307_D00550_0549_BCD5KUANXX_S36_L001_R1_001.gz
15864X60_190307_D00550_0549_BCD5KUANXX_S36_L001_R2_001.gz
15864X61_190307_D00550_0549_BCD5KUANXX_S51_L001_R1_001.gz
15864X61_190307_D00550_0549_BCD5KUANXX_S51_L001_R2_001.gz

Obrigado,
Felipe.

10. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 28/07/2019 - 22:06h


fvfreitas escreveu:

msoliver escreveu:


fvfreitas escreveu:

Oi Marcelo,
Na verdade o que muda no nome dos pares é a primiera parte do nome:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoX_R1_001.gz e arquivoX_R2_001.gz. # PAR 2
arquivoZ_R1_001.gz e arquivoZ_R2_001.gz. # PAR 3

Obrigado pela ajuda!
Abraço,
Felipe
Felipe, essa primeira parte do nome do arquivo, segue um padrão, tem alguma uma lógica...

Att.: Marcelo Oliver


Oi Marcelo,
O nome dos arquivos esta desse jeito aqui: 15864X6_190307_D00550_0549_BCD5KUANXX_S85_L001_R2_001.gz, variam, alem do R1 e R2, a primeira parte do nome, neste caso 15864X6 e a sexta, neste caso S85.
Seguem dois exemplos de pares:
15864X60_190307_D00550_0549_BCD5KUANXX_S36_L001_R1_001.gz
15864X60_190307_D00550_0549_BCD5KUANXX_S36_L001_R2_001.gz
15864X61_190307_D00550_0549_BCD5KUANXX_S51_L001_R1_001.gz
15864X61_190307_D00550_0549_BCD5KUANXX_S51_L001_R2_001.gz

Obrigado,
Felipe.

Felipe, o comando "ls" mostra a saída em ordem alfabética, sendo assim, a cada duas linhas da saída do "ls", temos um par de arquivos.
O comando:
ls -1 DIRETORIOALVO/*.gz|awk '{if(NR%2>0) printf "%s" ,$0;else printf " %s\n" ,$0}' 

Lista um par por linha.
Inclua os comandos necessários no "printf" e direcione para o bash, exemplo:
ls -1 DIRETORIOALVO/*.gz|awk '{if(NR%2>0) printf "COMANDO -1 %s COMANDO " ,$0;else printf "COMANDO %s COMANDO\n" ,$0}'|bash 

É isso...
IMPORTANTE => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

11. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 29/07/2019 - 09:36h

msoliver escreveu:


fvfreitas escreveu:

msoliver escreveu:


fvfreitas escreveu:

Oi Marcelo,
Na verdade o que muda no nome dos pares é a primiera parte do nome:
arquivoY_R1_001.gz e arquivoY_R2_001.gz. # PAR 1
arquivoX_R1_001.gz e arquivoX_R2_001.gz. # PAR 2
arquivoZ_R1_001.gz e arquivoZ_R2_001.gz. # PAR 3

Obrigado pela ajuda!
Abraço,
Felipe
Felipe, essa primeira parte do nome do arquivo, segue um padrão, tem alguma uma lógica...

Att.: Marcelo Oliver


Oi Marcelo,
O nome dos arquivos esta desse jeito aqui: 15864X6_190307_D00550_0549_BCD5KUANXX_S85_L001_R2_001.gz, variam, alem do R1 e R2, a primeira parte do nome, neste caso 15864X6 e a sexta, neste caso S85.
Seguem dois exemplos de pares:
15864X60_190307_D00550_0549_BCD5KUANXX_S36_L001_R1_001.gz
15864X60_190307_D00550_0549_BCD5KUANXX_S36_L001_R2_001.gz
15864X61_190307_D00550_0549_BCD5KUANXX_S51_L001_R1_001.gz
15864X61_190307_D00550_0549_BCD5KUANXX_S51_L001_R2_001.gz

Obrigado,
Felipe.

Felipe, o comando "ls" mostra a saída em ordem alfabética, sendo assim, a cada duas linhas da saída do "ls", temos um par de arquivos.
O comando:
ls -1 DIRETORIOALVO/*.gz|awk '{if(NR%2>0) printf "%s" ,$0;else printf " %s\n" ,$0}' 

Lista um par por linha.
Inclua os comandos necessários no "printf" e direcione para o bash, exemplo:
ls -1 DIRETORIOALVO/*.gz|awk '{if(NR%2>0) printf "COMANDO -1 %s COMANDO " ,$0;else printf "COMANDO %s COMANDO\n" ,$0}'|bash 

É isso...
IMPORTANTE => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

Muito obrigado, Marcelo!


12. Re: Script que execute comando em loop usando pares de arquivos que estão na mesma pasta [RESOLVIDO]

Enviado em 29/07/2019 - 09:37h

paulo1205 escreveu:

Uma solução usando apenas o shell.

for arq_r1 in *_R1_001.gz; do
nome_base="${arq_r1%_R1_001.gz}" # Remove o sufixo “_R1_001.gz”.
arq_r2="${nome_base}_R2.001.gz" # Aplica o sufixo “_R2_001.gz” ao nome base.
mitofinder -j "$nome_base" -1 "$arq_r1" -2 "$arq_r2" -r mitogenoma -o 5 -p 4 -m 30000
done


Opcionalmente, você pode querer confirmar se o nome com sufixo “_R2_001.gz” existe, antes de invocar o programa mitofinder. Nesse caso, você pode troca a linha que chama o programa pela seguinte.

  [ -e "$arq_r2" ] && mitofinder -j "$nome_base" -1 "$arq_r1" -2 "$arq_r2" -r mitogenoma -o 5 -p 4 -m 30000 


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)
Valeu demais Paulo, funcionou direitinho!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder