Faço uso de mala direta e uso as ferramentas que criei para propósitos diferentes como comunicar o número de faltas, divulgar notas de trabalhos e provas bem como emitir comunicados com meus alunos.
Às vezes os alunos mudam o endereço de e-mail e preciso atualizar em todos os meus programas. Como procurar todas as ocorrências nos arquivos que estão espalhado em diversos diretórios?
Acompanhe o shell script a seguir no qual a aluna Rosalia pediu para receber meus comunicados em outro endereço de e-mail.
#!/bin/bash find . -name \*.cs -exec ls {} \; > arquivosCS.txt linhas=`wc -l arquivosCS.txt | awk '{printf "%s\n",$1}'` for i in `seq $linhas` do grep -i rosalia `head -n $i arquivosCS.txt | tail -n 1` > /dev/null if [ $? == 0 ] then echo `head -n $i arquivosCS.txt | tail -n 1` fi done
Os passos são:
- Fazer o levantamento de todos os arquivos que têm códigos-fontes (extensão .cs)
- Determinar quantos arquivos têm a extensão cs
- Executar o for para analisar cada arquivo (combinando head e tail)
- Se o nome da pessoa está naquele arquivo (comando grep), então $? retorna 0 (zero) que é o mesmo que verdadeiro.
- O que for verdadeiro, faço que exiba o arquivo com o comando echo.
A instrução > /dev/null direciona a saída para o dispositivo que anula seu efeito, ou seja, não imprime a saída.
Este script deve ser executado no diretório que contém todos os arquivos relevantes da sua busca, ou seja, será feita a busca em todos os níveis a partir do ponto onde é executado.
A saída abaixo gerou uma listagem de todos os arquivos que tenho que fazer as modificações:
./faltas2016s2/faltas2016s2/faltas2016s2/FaltaAlunos.cs ./RHMatFinEstatistica2016/RHMatFinEstatistica2016/RHMatFinEstatistica2016/MalaDireta.cs
Conclusão: Funciona muito bem e recomendo que adote a ferramenta ao invés de confiar na memória acreditando que modificou em todos os arquivos necessários.
Nenhum comentário:
Postar um comentário