+ Responder ao Tópico



  1. #1

    Padrão Como renomear o arquivo com a data corrente?

    Ola pessoal!


    Gostaria da ajuda de vc's , pois como ainda estou dando meus primeiros passos em Shell Script ainda preciso de ajuda.

    Bom minha divida 'e a seguinte


    Tenho um script que escrevi que transferi um arquivo de um servidor para outro, depois move o arquivo de uma pasta para outra e renomeia o mesmo.

    Meu problema 'e que quando ele renomeia ele sobescreve o outro arquivo que esta na pasta.

    O que eu gostaria de fazer 'e que sempre que ele tiver que mover o arquivo de uma pasta para outra , ele possa renomear o arquivo com a data do dia corrente.

    Existe essa possibilidades?


    Segue o script abaixo para que possam entender melhor.



    Grato

    Daniel Abreu




    !/bin/bash

    echo copying from etm to zion

    #------------------------------TEST-------------------------#
    scp -v /var/log/file/Master.csv root@ip_dest:/file/destino

    echo Finish copy


    echo rename file and save on backup folder

    #------------------------------TEST----------------------------------------#
    mv -v /var/log/file/Master.csv /var/log/file/backup/Masrter.csv.old

    echo finish copy

  2. #2

    Padrão

    vc pode usar o awk é um boa opção p/ usar!

    server# date | awk '{print $1}'
    Thu
    server# date | awk '{print $2}'
    Jun
    server# date | awk '{print $3}'
    5
    server# date | awk '{print $4}'
    08:27:41
    server#

    pode usar assim tbm

    Calango# touch teste
    Calango# ls
    teste
    Calango# mv teste "`date`"
    Calango# ls
    Thu Jun 5 08:30:02 BRT 2008
    Calango#

  3. #3

    Talking Resolvido / Grato!!!

    Meu amigo!!!


    MUITO OBRIGADO!!!


    Fiz apenas uma simples auteracao aqui no script e tudo funciona como um relogio!


    Grato !



    Daniel

  4. #4

    Padrão Outra sugestão...

    Olá Daniel!

    Não sei bem como você fez aí no seu script. Apesar da idéia do colega Anderson aparentemente resolver o seu problema, ele pode acabar de causando outros futuramente.

    Apesar de o GNU/Linux ter evoluído bastante, o caractere de espaço ainda é um caractere especial e deve, portanto, ser escapado sob o risco de você criar um arquivo com nome de difícil identificação.

    Mas vamos ao foco do seu problema... pelo que eu entendi do seu script, você copia um arquivo para um outro servidor e depois move este arquivo de origem para um outro diretório e com outro nome.

    Eu concordo plenamente que o awk(1) seja uma ferramenta muito poderosa, mas neste caso específico estaríamos usando um canhão para matar uma mosca. A forma mais fácil de resolver o seu problema é utilizar o próprio date(1), que aceita uma série de parâmetros para formatação de datas.

    Eu sugiro utilizar a seguinte sintaxe: date +%Y%m%d, que vai criar a data no formato AAAAMMDD. Por que este formato e não o DDMMAAA? A idéia de se ter um backup de um determinado arquivo, é ser capaz de recuperá-lo quando necessário e da forma mais rápida possível. Se você cria um arquivo que tenha o formato DDMMAAAA, quando usar um 'ls -l' terá todos os arquivos do dia 01, depois todos do dia 02 e assim por diante, independente do mês e do ano em que foram criados. Já quando se tem a formatação AAAAMMDD, você terá todos os arquivos do ano 2008, do mês 01 ao 12, e do dia 01 ao 31 e o mesmo para os anos subsequentes.

    Isto facilita, não só a organização e a localização dos arquivos, como também a limpeza dos arquivos antigos de forma automatizada.

    Seguindo esta sugestão, troque a última linha do script que você colocou no seu post para:

    Citação Postado originalmente por dlabreu Ver Post

    mv -v /var/log/file/Master.csv /var/log/file/backup/Masrter.csv.`date +%Y%m%d`

    E está resolvido o seu problema!