Estou operando em grandes quantidades de dados e tenho um protocolo envolvendo vários scripts. Eu o inicio separadamente para cada arquivo de entrada, simplesmente trocando filename
no arquivo de texto que contém o comando. Eu gostaria de saber se é possível automatizá-lo para todos os arquivos com certas extensões, quando for x in ...
é usado no comando.
Exemplo do que tenho agora
mkdir filename.file && for f in *.different_file; do [[ -n $(awk 'NF{i++} END {if (i<14) print FILENAME}' "$f") ]] && rm "$f" ;done
e a funcionalidade que gostaria de ter:
for x in location/*.file do; mkdir $x && for f in *.different_file; do [[ -n $(awk 'NF{i++} END {if (i<14) print FILENAME}' "$f") ]] && rm "$f" ;done ;done
haveria mais loops dentro do loop principal, mas não empilhando mais.
Como posso conseguir algo assim?
EDIT: Mais algumas informações sobre o que eu quero, perdoe minha linguagem não profissional:
Eu gostaria de ter duas variáveis trabalhando dentro de dois loops, um dentro do outro. Acredito que o uso de loops aninhados, como sugerido por @Lety, pode ser a melhor solução, embora leve algum tempo para testá-lo.
Mais alguns comandos que estou usando para visualizar o problema:
mkdir filename.file && for i in *.file2; do program /filename.file/filename.file $i> $i.filename.file.out ; done && for f in *.file.out; do [[ -n $(awk 'NF{i++} END {if (i<14) print FILENAME}' "$f") ]] && rm "$f" ;done && for i in *.file.out; do grep -v '^#' $i >> $i.trim; done
Eu gostaria de ter filename.file definido como uma variável que seria a mesma para todos os loops:
for x in *.file do; mkdir $x && for i in *.file2; do program /$x/$x $i> $i.$x.out ; done && for f in *.file.out; do [[ -n $(awk 'NF{i++} END {if (i<14) print FILENAME}' "$f") ]] && rm "$f" ;done && for i in *.file.out; do grep -v '^#' $i >> $i.trim; done; done
Espero que isso esclareça um pouco. Vou investigar loops aninhados no script bash, outra dificuldade é que ele tem que trabalhar para o cygwin também, mas eu acho que não deveria importar tanto quanto os comandos estão corretos.