Mateus Müller - 4Fasters

Mateus é o idealizador do projeto 4Fasters.

09 Out 2019

OTIMIZANDO meu código em Shell Script

Recentemente fiz um post mostrando uma automação em Shell Script para converter vídeos para o DaVinci Resolve e que deu uma boa repercussão. Até fiz um vídeo sobre isso, vou deixar ambos aqui em baixo:

Se você ler ou assistir, vai entender uma das gambiarras que eu fiz para não percorrer diretórios repetidos, utilizando uma variável temporária. Um tempo depois, hoje, 06 de Outubro eu fiz uma pequena otimização de uma ideia que tive do nada e só quis documentar aqui para lembrar que sempre dá para melhorar.

O problema…

Você pode notar que no primeiro looping eu estava percorrendo cada diretório que continha um arquivo de vídeo, e isso inclui diretórios duplicados.

OTIMIZANDO meu código em Shell Script

Para ficar mais claro, veja direto no Terminal:

OTIMIZANDO meu código em Shell Script

Por este motivo, estava utilizando o a variável ultimo_diretorio para fazer esse controle, realizando a conversão do vídeo somente quando ela era diferente da anterior. Puta gambiarra!

A solução! YEAH

As soluções sempre vem do nada… Estava no banho quando do nada, plin! Lembrei de um comando que retira as linhas duplicadas. Bastaria enviar o stdout do find para o uniq e ver o resultado…

Ainda havia outro problema, o uniq só funciona para linhas “seguidas”. Por exemplo, neste caso não funcionaria:

OTIMIZANDO meu código em Shell Script

Isso porque o uniq vai transformar as três primeiras linhas, depois vai pegar as próximas 4 e também deixar como único. A última linha que também deveria desaparecer, vai continuar pois deveria estar junto com as primeiras. Veja:

OTIMIZANDO meu código em Shell Script

Então, pensei em ordenar tudo antes de passar para o uniq, que é onde o sort entra no jogo (Bash é muito bom cara…).

Então ficou mais ou menos assim:

OTIMIZANDO meu código em Shell Script

E o resultado final:

OTIMIZANDO meu código em Shell Script

Isso me rendeu -6 linhas de código e matamos uma gambiarra.

Conclusão

A conclusão que eu quero passar nesse artigo é que sempre dá para melhorar, vai da nossa vontade de querer pesquisar afundo o que pode ser feito para isso. Também para falar que é normal seguir o fluxo de primeiro, fazer funcionar. Depois, vamos lentamente lapidando e melhorando! 🙂

Espero que tenha gostado destas dicas!

Me siga no Instagram onde eu faço conteúdos da minha rotina diária.

Participe dos nossos grupos no Telegram e Facebook! 🙂

Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!
comments powered by Disqus