Há um certo tempo que estudo Shell Script do GNU/Linux e agora passo a publicar meus códigos-fontes com a intenção de incentivar as pessoas a resolverem seus problemas programando. Um outro propósito é reunir pessoas que também programam para que todos se beneficiem ganhando novas técnicas de programação.
Neste primeiro post eu mostro como modificar arquivos atendendo a um critério. Por exemplo, suponha um diretório que tenham uma diversidade de arquivos misturados. Vamos fazer as seguintes alterações:
1. Mudar de letras maiúsculas para minúsculas;
2. Alterar o nome de arquivos usando uma sequência numérica.
Para resolver o item 1, temos:
for M in *.JPG do m=$(echo $M | tr A-Z a-z) mv -v $M $m done
Para a problema 2, o formato que os nomes de arquivos terão contem sempre 2 dígitos. Por exemplo: 01.jpg, 02.jpg, ..., 10.jpg, 99. jpg.
#!/bin/bash declare -i i=1 declare -i qtde
qtde=`ls *.jpg | wc -l` for i in `seq 9` do mv -v `ls -1 *.jpg | head -n $i | tail -n 1` 0$i.jpg done for i in `seq 10 1 "$qtde"` do mv -v `ls -1 *.jpg | head -n $i | tail -n 1` $i.jpg done
Caso deseje que seja 1.jpg, 2.jpg, ..., 10.jpg, ou seja, sem o número 0 (zero) à esquerda, o código pode ser enxugado para este abaixo:
#!/bin/bash declare -i i=1 declare -i qtde qtde=`ls *.jpg | wc -l`
for i in `seq "$qtde"` do mv -v `ls -1 *.jpg | head -n $i | tail -n 1` $i.jpg done
As câmeras digitais armazenam os nomes de arquivos com letras maiúsculas. Portanto, caso queira manter a extensão JPG (maiúsculas), troque a linha
qtde=`ls *.jpg | wc -l`
por
qtde=`ls *.JPG | wc -l`
para que o sistema operacional faça a contagem correta.
O exemplo apresentado tratou da extensão jpg. Modifique de acordo com as suas necessidades tornando aplicável à outras extensões ou mesmo o nome do arquivo.
Espero que possa ser útil para organizar seus arquivos pessoais e profissionais.
Murilo Fujita
murilofujita@gmail.com
Nenhum comentário:
Postar um comentário