Script para renomear arquivos
Publicado por Sandro Marcell 28/01/2008
[ Hits: 18.994 ]
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
Script para baixar e-mails de sites automaticamente
APPSOM - Listar e reproduzir músicas, vídeos e imagens
Gerador de PPP para USB (Palm OS e Pocket PC)
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como criar um robot em NTSL (Nelogica Trading System Language) para Profitchart
Use o Google PageSpeed Insights para verificar um site
Como Atualizar Fedora 39 para 40
Sistema da Coréia do Norte - Red Star OS (29)
filtrar só as pastas onde tem arquivo (4)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (31)
Instalacao Manjaro em notebook com placa de video hibrida [RESOLVIDO] (2)