sábado, 30 de julho de 2011

Renomear de maiúscula para minúscula e com sequência numérica

  Bem-vindos!
  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