Comparando arquivos por data

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

[ Hits: 9.010 ]

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

Libera conectividade social em rede com squid

Montagem fácil de pendrive

Atualizando páginas automaticamente com Lynx

Trocar senha de root NO BRACO remotamente

Troca periódica de senhas para usuários


  

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