Script para renomear arquivos

Publicado por Sandro Marcell 28/01/2008

[ Hits: 19.226 ]

Homepage: http://sanmarcell.wordpress.com

Download rename.sh




Precisava de um programa que renomeasse arquivos em lote. Por isso escrevi este simples script que me quebrou um galhão. Ele renomeia os arquivos seguindo o padrão:

arq_1.txt, arq_2.txt, arq_3.txt ...

Espero que seja útil para mais alguém.

Falou!!!

  



Esconder código-fonte

#!/bin/bash --norc 
#
# Simples script para renomear arquivos.
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
# Boa Vista, Roraima - 31/06/2007 (Atualizado em 07/12/2007)
#
# Uso: nome_script -a [-n nome] [-c número] [-e extensão] arquivo1 ...
# Onde:
# -a[A]       = Mostra esta tela de ajuda.
# -n[N] nome     = Novo nome dos arquivos.
# -c[C] número   = Número em que o contador será iniciado.
# -e[E] extensão = Extensão dos arquivos.
#
# Obs.:
# - Caso as opções [-n] e [-e] não sejam declaradas, os arquivos serão
# renomeados com base na variável 'contador'.
# - Se a opção [-c] não for declarada, o 'contador' iniciará em 1.
# - É possível o uso do metacaractere (*)
# - Os arquivos renomeados serão movidos para o diretório de trabalho
# corrente.
# - Se no diretório corrente houver arquivos com o mesmo nome declarado
# na opção [-n], então cópias em 'backup' serão criadas.
# - Por segurança, faça cópias em 'backup' dos arquivos a serem renomeados.

# Realçando saída do comando 'echo':
Echo() { echo -e "\e[1m$*\e[m"; }

# Caso o usuário interrompa a execução do script:
trap "break ; exit" 1 2 3 15

# Utilizando o script:
Uso() {
Echo "Uso: ${0##*/} -a [-n nome] [-c número] [-e extensão] arquivo1 ...
Onde:
-a[A]          = Mostra esta tela de ajuda.
-n[N] nome     = Novo nome dos arquivos.
-c[C] número   = Número em que o contador será iniciado.
-e[E] extensão = Extensão dos arquivos."; }

# Checando parâmetros:
[[ $BASH_ARGC ]] || { Echo "Faça: '${0##*/} -a' para obter ajuda."; exit 1; }

# Inicializando variáveis:
NOME= ; CTD=1 ; EXT=

# Checando as opções definidas pelo usuário:
while getopts "aAn:N:c:C:e:E:" OPC 2>/dev/null
do
   case "$OPC" in
      # Variável 'nome': 
      [nN]) NOME="$OPTARG" ;;
      
      # Variável 'contador':
      [cC]) CTD="$OPTARG"
      # Somente números são válidos para o contador:
      [[ $CTD != [0-9]* ]] && CTD=1 ;;

      # Variável 'extensão':
      [eE]) EXT="$OPTARG"
      # Com ou sem ponto separador?
      [[ ${EXT##.*} == $EXT ]] && EXT=".$OPTARG" ;;

      # Obtendo ajuda:
      [aA]) Uso ; exit ;;

      # Opções inválidas:
      *) Echo "Faça: '${0##*/} -a' para obter ajuda."; exit 1 ;;
   esac
done

# Removendo opções para capturar os arquivos a serem renomeados: 
shift $(($OPTIND-1))

# O usuário especificou algum arquivo?
[[ $BASH_ARGC ]] || {
Echo "-> Especifique os arquivos a serem renomeados." && exit 1; }

# Informando o diretório de destino dos arquivos renomeados:
Echo "\aATENÇÃO: Os arquivos renomeados serão movidos para: $PWD"; sleep 2

# Iniciando laço:
for A in $@
do
   # Testes condicionais:
   [[ ! -e $A ]] && Echo "[$A] Arquivo não encontrado." && continue
   [[ ! -w $A ]] && Echo "[$A] Sem permissão para renomear." && continue
   [[ -d $A ]]   && Echo "[$A] Diretórios não serão renomeados." && continue

   # Concatenando variáveis para formar o novo nome:
   NN="${NOME}_${CTD}${EXT}"

   # Renomeando...
   mv --backup=t -T "$A" "$NN" &>/dev/null
   [[ $? ]] && Echo "[$A]: Renomeado!" || Echo "... =("
   
   # Incrementando a variável 'contador':
   ((CTD++))
done
# Fim

Scripts recomendados

Um super limpador do sistema KDu

Iptables Port Knocking

Criando Máquina Virtual

Script de compilação do Xorg 7.2 otimizado para Slackware 64 bits (Slamd64)

Busca de arquivos nas ports FreeBSD


  

Comentários
[1] Comentário enviado por SMarcell em 09/04/2008 - 08:14h

Fiz uma atualização nesse script, agora ele renomeia os arquivos da seguinte forma:

arq001 arq002 ... arq100

Além do que, agora é possível fazer backups dos arquivos que serão renomeados.

Link para a versão atualizada:
http://www.slackbr.org/forum/viewtopic.php?f=45&t=15052


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts