Script para renomear arquivos
Publicado por Sandro Marcell 28/01/2008
[ Hits: 19.187 ]
Homepage: http://sanmarcell.wordpress.com
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!!!
#!/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
Instalando BeEF Framework no Ubuntu
Identifica contatos do google que necessitam de ajustes para o nono digito telefonico
Monitorando espaço em disco com IP dinâmico.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)