+ Responder ao Tópico



  1. #1

    Question Seleção de Arquivos por Data (no nome)

    Pessoal,

    Tenho que apagar todos os arquivos de um diretório que tenham sido criados a mais de 30 dias, e gravar o nome deles em um log, usando o syslog.
    A dificuldade é que tenho que usar como parâmetro de data de criação uma parte do nome do arquivo.
    O nome dos arquivos está nesse padrão: <STRING DE 15 POS.>_AAAAMMDD-HHMMSS.tif
    A ideia que tive foi mais ou menos assim, mais aceito sugestões:
    Código :
    for arquivos in `find /var/spool/out -name '*.tif' -print`; do
          if [ <DATA NO NOME DO ARQUIVO TEM MAIS DE 30 DIAS> ]; then             
            #Gravar nome do arquivo no log
            #Apagar arquivo
          fi
    done

    Antes da data, é fixo uma string de 15 posições.
    AAAA = Ano com 4 dígitos
    MM = Mês com 2 dígitos
    DD = Dia com 2 dígitos
    HH = Hora com 2 dígitos
    MM = Minuto com 2 dígitos
    SS = Segundo com 2 dígitos

    Tenho que usar a data que está no nome do arquivo.

    A minha dificuldade está em pegar uma parte do nome, converter para data e verificar se tem mais de 30 dias da data atual.

    [...]´s

    Marcio.

  2. #2

    Padrão Re: Seleção de Arquivos por Data (no nome)

    Código :
    #!/bin/bash
    # Remove arquivos maiores que 30 dias e gera um log
    FILENAME=FILES_$(date +%Y%m%d%H%M%S).tif
    find . -mtime +30 -exec echo {} \; > $FILENAME
    rm -rfv $(cat $FILENAME)

    Última edição por rauhmaru; 03-06-2012 às 14:27. Razão: Mudança no parâmetro de segundos