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

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

Felipe
fvfreitas

(usa Ubuntu)

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


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

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]

Marcelo Oliver
msoliver

(usa Debian)

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]

Felipe
fvfreitas

(usa Ubuntu)

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]

Paulo
paulo1205

(usa Ubuntu)

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

Marcelo Oliver
msoliver

(usa Debian)

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]

Felipe
fvfreitas

(usa Ubuntu)

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]

Marcelo Oliver
msoliver

(usa Debian)

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]

Felipe
fvfreitas

(usa Ubuntu)

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]

Marcelo Oliver
msoliver

(usa Debian)

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]

Felipe
fvfreitas

(usa Ubuntu)

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]

Felipe
fvfreitas

(usa Ubuntu)

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!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts