Os e-mails são alvos com alguma extensão? Se não vamos ter que mudar a pasta. Se não o script vai tentar renomear todos os arquivos da pasta.
Versão Imprimível
são sim...a ext é hylafax de todos os emails que chegam
Testa ai... preenche os diretorios iniciais e finais...Testei aqui e funcionou.
Código :
#!/bin/bash #Variáveis inicias #Diretorio inicial dir_inicial="/home/magnun/teste1" #Diretorio de destino dir_final="/home/magnun/teste2" #Chave que identifica novo nome chave="subject:" #vai para diretorio inicial cd $dir_inicial #Lista conteudo lista=$(ls -F | grep "[.]hylafax$") #Percorre lista de arquivos for item in $lista do #Captura novo nome com base na chave novo_nome=$(cat $item | grep $chave | cut -d":" -f 2) echo Renomeando e movendo $item para $dir_final/$novo_nome.hylafax... mv $item $dir_final/$novo_nome.hylafax done
Lembrando que o programa funciona se o subject:nome tiver no inicio da linha
Até mais...
Cara eu copiei e colei seu script em um arquivo novo: script.sh dei permissão para ele de 775 e rodei ./script.sh
Ele não fez nada, não deu erro algum porém também não fez a tarefa proposta....porque será?
A única coisa que mudei do seu script foi o diretorio inicial e final (obvio)
#Diretorio inicial
dir_inicial="/home/renato/.getmail/new"
#Diretorio de destino
dir_final="/home/renato/email"
Os dois diretórios já existem?
Fiz algumas mudaças pra mostrar algumas mensagens... Se ele não mostrou nenhuma mensagem é porque ele não deve ter encontrado nenhum arquivo com a extensão .hylafax. Testa esse novo com algumas mesnagens a mais. Se não funcionar entra no diretório /home/renato/.getmail/new e executa o comando ls -F | grep "[.]hylafax$" e verifica se os arquivos foram listados.
Até mais...
Código :
#Variáveis inicias #Diretorio inicial dir_inicial="/home/renato/.getmail/new" #Diretorio de destino dir_final="/home/renato/email" #Chave que identifica novo nome chave="subject:" #vai para diretorio inicial cd $dir_inicial echo movendo para: pwd #Lista conteudo lista=$(ls -F | grep "[.]hylafax$") echo Lista de arquivos a serem renomeados ... echo $lista #Percorre lista de arquivos for item in $lista do #Captura novo nome com base na chave novo_nome=$(cat $item | grep $chave | cut -d":" -f 2) echo Renomeando e movendo $item para $dir_final/$novo_nome.hylafax... mv $item $dir_final/$novo_nome.hylafax done