Comparando arquivos por data

Publicado por Guinux (última atualização em 31/05/2013)

[ Hits: 8.992 ]

Homepage: www.software.inf.br

Download data.sh




Depois de muito procurar, e não encontrar, resolvi desenvolver um script que recebe dois arquivos e retorna qual é o mais recente.

Espero que seja útil.
Abraços.

  



Esconder código-fonte

#!/bin/bash
#
# data.sh -
#
# Site      : http://www.software.inf.br
# Autor     : Guilherme Giuliani <guilherme@software.inf.br>
# Manutenção: Guilherme Giuliani <guilherme@software.inf.br>
#
#  -------------------------------------------------------------------------
#   Este programa recebe dois arquivos e retorna qual mais atual
#  -------------------------------------------------------------------------
#
#
# Histórico:
#
#    v1.0 2013-05-29, Guilherme Giuliani:
#       - Versão inicial do programa
#
#
# Ex. de Uso: $ ./data.sh arq1 arq2
# Licença: GPL.
#

#0=IGUAL #1=RECENTE #2=ANTIGO

DD1=`date -r $1 +%d`; MM1=`date -r $1 +%m`; AA1=`date -r $1 +%Y`; H1=`date -r $1 +%H`; M1=`date -r $1 +%M`; S1=`date -r $1 +%S`;
DD2=`date -r $2 +%d`; MM2=`date -r $2 +%m`; AA2=`date -r $2 +%Y`; H2=`date -r $2 +%H`; M2=`date -r $2 +%M`; S2=`date -r $2 +%S`;

        if [[ "AA1" -gt "AA2" ]]; then status="1"; elif [[ "AA1" -lt "AA2" ]]; then status="2"; elif [[ "AA1" -eq "AA2" ]]; then
        if [[ "MM1" -gt "MM2" ]]; then status="1"; elif [[ "MM1" -lt "MM2" ]]; then status="2"; elif [[ "MM1" -eq "MM2" ]]; then
        if [[ "DD1" -gt "DD2" ]]; then status="1"; elif [[ "DD1" -lt "DD2" ]]; then status="2"; elif [[ "DD1" -eq "DD2" ]]; then
        if [[ "H1" -gt "H2" ]]; then status="1"; elif [[ "H1" -lt "H2" ]]; then status="2"; elif [[ "H1" -eq "H2" ]]; then
        if [[ "M1" -gt "M2" ]]; then status="1"; elif [[ "M1" -lt "M2" ]]; then status="2"; elif [[ "M1" -eq "M2" ]]; then
        if [[ "S1" -gt "S2" ]]; then status="1"; elif [[ "S1" -lt "S2" ]]; then status="2"; elif [[ "S1" -eq "S2" ]]; then status="0";
        fi fi fi fi fi fi

echo $status

Scripts recomendados

Visual para tcpdump com dialog

Backup de Base de Dados

Script gera uma chave md5 de todos os arquivos que forem especificados

Script de Instalação de Layer7 no CentOS 6.0

Enviar mensagens Via Net Send no Linux


  

Comentários
[1] Comentário enviado por itamarnet em 01/06/2013 - 16:14h

Ao invés de usar tantas variáveis poderia ser mais direto:

[ $(date -r $1 +%Y%m%d%H%M%S) -gt $(date -r $2 +%Y%m%d%H%M%S) ] && status=1 || status=2
[ $(date -r $1 +%Y%m%d%H%M%S) -eq $(date -r $2 +%Y%m%d%H%M%S) ] && status=0

É apenas uma sugestão.

[2] Comentário enviado por fabioeduardo em 29/10/2013 - 11:59h

Existe uma opção de comparação do test para isso:

[ arquivoNovo.txt -nt arquivoAntigo.txt ] && echo "O arquivo arquivoNovo.txt é mais recente"

Caso o primeiro arquivo seja mais recente será impresso na tela a frase do echo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts