bom, acho que se o cara tava distribuindo este script pela net ele não se incomdará de posta-lo aqui, claro mantendo seus direitos autorais e não modificando o script
Editado
Legal, Liberado, mandei um e-mail pra ele e ele libero
#!/bin/bash
#############################################################################
# Titulo : rename
# Autor : J. F. Mitre <jf_mitre@yahoo.com.br>
# Data : 31 de Janeiro de 2005, Segunda-Feira
# Requisitos :
# Categoria : Tools
#############################################################################
# Descrição :
# - Renomear arquivos múltiplos, seguindo regras.
#
#############################################################################
# Uso :
# rename [opcoes] arquivos
# rename -h : para o help
#############################################################################
# 2005/01/31 - Criação do Script rename
#############################################################################
#############################################################################
#
# Função com a descrição dos princiais recursos do Script
#
#############################################################################
usage(){
echo "
-----------------------------------------------------------------------------
Titulo : rename
Autor : J. F. Mitre <jf_mitre@yahoo.com.br>
Data : 31 de Janeiro de 2005, Segunda-Feira
Requisitos :
Categoria :
-----------------------------------------------------------------------------
Descrição :
- Renomea arquivos em lote
-----------------------------------------------------------------------------
Uso :
$(basename $0) [opcoes]
-----------------------------------------------------------------------------
Opções:
-h|--help - Imprime este texto de ajuda
-p|--prefix - Acrescenta prefixo
-s|--sufix - Acescentra sufixo
-n|--nome - Modifica a base do nome
A ausência desse parâmetro mantêm o núcleo do nome do
arquivo original
-c|--cont - Adiciona contador ao prefixo/nome/sufixo/contador
Esse contador é simples e sem argumentos
-e|--ext - Modifca extensão
A ausência mantêm a extensão atual
Argumentos das opções
-p|--prefix - Expressão a ser acrescentada no prefixo do nome
-p|--prefix - Expressão a ser acrescentada no sufixo do nome
-n|--nome - Um novo nome (núcleo) para os arquivos
-e|--ext - Nova extensão dos arquivos
-----------------------------------------------------------------------------
Ex.:
$(basename $0) -c -p linux_ -s _doc *
Acrescenta um contador
Adiciona a palavra linux_ a todos os arquivos no começo
Adiciona a palavra _doc ao final de todos os arquivos
$(basename $0) -c -e .jpg -n palhaço *
Todos os arquivos receberão .jpg como extensão
Serão todos \"palhaço\"(NUMERO_VARIANDO).jpg
$(basename $0) -h
-----------------------------------------------------------------------------
Notas :
- Para evitar erros, uma vez usado o programa, não será permitido
usar o programa novamente no mesmo lugar enquanto não for removido
os arquivos de backup não forem removidos MANUALMENTE.
No futuro haverá uma opção simples para checagem do resultado e se
deseja remover o backup e haverá outro impondo a modificação de
qualquer jeito, algo tipo -f|--force
- Erros de chamada do script pode levar a resultados curiosos
Ex. -n -c linux -e jpg
Todas as palavras serão chamadas -c e não terão contadores, ora
isso promoverá sobrescrição dos arquivos, que podem ser recuperados
na pasta \"backup_original\" no mesmo diretório que contém os
arquivos.
- O contador utilizado nessa versão acrescenta números simples,
ou seja, 1, 2, ... 10, 99, 100. Eles não possuem 0 (ZEROS) para
uma numeração uniforme, e portanto podem não ter o resultado
esperado de ordenação, o objetivo de numerar os arquivos têm com o
único objetivo de diferenciá-los, além disso esse contador somente
pode ser usado em uma posição, depois do sufixo/antes da extensão
Isso deve vir a ser modificado no futuro
- Se o programa for chamado da forma $(basename $0) <arquivos>, nada
acontecerá, essa é uma forma bem diferente de fazer uma cópia dos
arquivos de uma pasta em uma pasta chamada \"backup_original\"
Esse será o único efeito final, entretanto os arquivos serão todos
\"renomeados\" do tipo mv nomeatual nomeatual, portanto, a chamada do
script sem argumentos, mesmo não tendo resultados visuais posterior
poderá demorar em pastas grandes
- FAÇA BACKUP DE TODOS OS ARQUIVOS QUE VIVER A SOFRER UMA MODIFIÇÃO
ATRAVÉS DESSE SCRIPT. Não apenas devido a bugs e afins, mas também
por causa da forma como que é feito, ou seja, sem perceber o usuá-
rio pode ter criado um expressão que seja o nome de um dos arquivos
originais. Sua única garantia interna é o backup feito pelo script,
mas se algo der errado nesse backup é melhor que tenha feito o seu
antes. Pense bem, dá menos trabalho copiar os arquivo e depois usar
o script do que renomear todos um a um.
-----------------------------------------------------------------------------
"
}
#############################################################################
#----------------------------------------------------------------------------
# Imprime o Help no caso do primeiro argumento ser: -h ou --help
#----------------------------------------------------------------------------
if [ $# != 0 ];then
if [ $1 == -h -o $1 == --help ]; then
usage |less
exit
fi
fi
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Caso o script precise de argumentos
#----------------------------------------------------------------------------
if [ $# == 0 ];then
usage |less
exit
fi
#----------------------------------------------------------------------------
#############################################################################
#
# ZONA DE CONFIGURAÇÃO DO SCRIPT
#----------------------------------------------------------------------------
# Variáveis de script
#----------------------------------------------------------------------------
BINDIR=$HOME/bin # Diretório de arquivo binários
NULLOUT=/dev/null # Saída nula
DATA=$(date +%Y-%m-%d) # Data formatada adequadamente
IN=$* # Inputs (argumentos de linha)
NUMIN=$# # Número total de argumentos
PROGNAME=$(basename $0)
#----------------------------------------------------------------------------
# Arquivo(s) Temporário(s)
#----------------------------------------------------------------------------
ATMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#BTMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#CTMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#DTMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#ETMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#FTMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#GTMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#HTMP=$(mktemp /tmp/tmp.$PROGNAME.XXXXXXXX) || exit 1
#############################################################################
#
# Funções de sistema do script
#---------------------------------------------------------------------------
# - Operações de identificação de objetivos e manutenção
#----------------------------------------------------------------------------
# - Funções:
# checkinput - Checa e atribui identificação aos argumentos
# removetmp - Remove os arquivos temporários criados
#############################################################################
#----------------------------------------------------------------------------
# checkinput - Verifica e analisa quais as opções do script serão utilizadas
#----------------------------------------------------------------------------
checkinput(){
# Lista de controle :
# 0 (ZERO), desativado
# 1 (UM) ativado
# 2 (DOIS) ativado com argumentos
p_STATUS=0 # - Prefixo do nome
s_STATUS=0 # - Sufixo do nome
n_STATUS=0 # - Nome
c_STATUS=0 # - Contador
e_STATUS=0 # - Extensão
# Inicialização das variáveis
PREFIX=
SUFIX=
nome=
ext=
for j in $IN; do
# Captando os argumentos das opções
if [ $p_STATUS == 1 ]; then p_STATUS=2; PREFIX=$j; fi
if [ $s_STATUS == 1 ]; then s_STATUS=2; SUFIX=$j; fi
if [ $n_STATUS == 1 ]; then n_STATUS=2; nome=$j; fi
if [ $e_STATUS == 1 ]; then e_STATUS=2; ext=$j; fi
[ $j == -p ] && p_STATUS=1
[ $j == -s ] && s_STATUS=1
[ $j == -n ] && n_STATUS=1
[ $j == -c ] && c_STATUS=1
[ $j == -e ] && e_STATUS=1
# ORIG : arquivos a serem renomeados
[ -f "$j" ] && ORIG=$ORIG\ $j
done
}
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# removetmp - Remove TODOS os arquivos temporários criados no Script
#----------------------------------------------------------------------------
removetmp(){
rm -f /tmp/tmp.$PROGNAME.XX*
}
#----------------------------------------------------------------------------
#############################################################################
#
# Funções do Script
#----------------------------------------------------------------------------
# - Todo o Trabalho é executado apenas na MAIN
#############################################################################
#############################################################################
#
# MAIN FUNCTION
# - Responsável pela inicialização do script
#############################################################################
main(){
checkinput # Obtem as informações de opções e argumentos
#---------------------------------------------------------------------------
if [ -d "backup_original" ]; then
echo "Existe uma pasta chamada: backup_original"
echo "Remova ela antes de rodar o script"
echo "Isso impedirá que erros na chamada do script ou idéias não tão bem"
echo "sucedidas impliquem em perda dos arquivo"
echo "\"O incomodo de hoje é o seu seguro de amanhã\""
exit
fi
mkdir backup_original
cp $ORIG backup_original/
if [ $c_STATUS == 1 ];then
CONT=0
fi
for k in $ORIG; do
if [ $c_STATUS == 1 ];then
CONT=$((1+CONT))
fi
if [ $n_STATUS != 2 ]; then
# Nome original deve ser mantido
# Tudo que estiver antes do primeiro "." é nome
NOME=$(echo "$k"| cut -f 1 -d ".")
else
NOME=$nome
fi
if [ $e_STATUS != 2 ]; then
# A extensão deve ser mantida
# Tudo que estiver depois do primeiro "." é extesão
EXT=.$(echo "$k"| cut -f 2- -d ".")
else
EXT=$ext
fi
mv $k "$PREFIX""$NOME""$SUFIX""$CONT""$EXT"
done
#---------------------------------------------------------------------------
}
# Inicializando o Script - Chamando a função main
main
# remove os arquivo temporário
# será usado em versões futuras
removetmp