erlug
[Top] [All Lists]

Re: [Erlug] cambiare data

To: ERlug - Lista Pubblica <erlug@xxxxxxxxxxxxxx>
Subject: Re: [Erlug] cambiare data
From: Eagleone <andrea.scavolini@xxxxxxxxx>
Date: Thu, 28 Jul 2005 12:20:16 +0200
On 7/28/05, Nando Santagata <nando@xxxxxxxxx> wrote:
> man touch
> man ls (per una spiegazione delle varie date)

A suo tempo usai sti due script qui trovati qua e la e modificati.
Sara' da aggiustare e migghiorare anche perche' allora non ne sapevo
una mazza di scripting. Ergo se hai migliorie condividi ;)


cambiaora.sh
-------------------------------- inizio cambiaora.sh ---------
#!/bin/bash
# Script che corregge la data dei files contenuti in una cartella
traslandola del quantitativo voluto

# NB: richiede contemporaneamente nella stessa cartella da cui ?
lanciato lo script perl timestamp.pl
#---VARIABILI DA IMPOSTARE----
# cartella dove risiedono i file
FOLDERADD='/home/eagleone/prova/'
# Fuso orario in secondi (Provare con l'opzione --test se va bene. Se
lanciato lo script con --test la data ? invariata, allora il fuso ?
correttamente inserito)
FUSO=7200
#Traslazione: ? la correzione sulla data che si vuole effettuare (la
data viene sottratta
TRANS=3300
# Facoltativo:prefisso dei file (visto che sono immagini saranno tutte simili...
IMAGESPRE='dsc'
# estensione dei file
IMAGESPOST='jpg'

# Elenco dei file
LISTAFILE=`stat -c %n $FOLDERADD$IMAGESPRE*.$IMAGESPOST`
#echo Primo stato $STATO

# Ciclo che cambiare la data dei file nella LISTAFILE
for NOMEFILE in $LISTAFILE; do
        #Prendo il timestamp della data
        DATA=`stat -c %Y $NOMEFILE`
        # Calcolo la data con la correzione di TRANS
        let NEWDATA=$DATA-$TRANS+$FUSO
        # Se chiamata con l'opzione --test non deve modificare la
data: serve per verificare il valore corretto di FUSO. Lo si potrebbe
automatizzare...
        if [[ $1 == "--test" ]] ; then let NEWDATA=$DATA+$FUSO ; fi
        # Chiama lo script perl timestamp.pl che converte la data dal
timestamp al formato voluto da touch -t
        CONVERTI=`/usr/bin/perl timestamp.pl $NEWDATA`
        # Cambio la data del file
        touch -t $CONVERTI $NOMEFILE

done
--------------- fine cambiaora.sh -------------

--------------- inizio timestamp.pl ------------
#!/usr/bin/perl
# Inculdo la libreria necessaria
use Date::Calc qw(:all);
# Vuole che venga passato il timestamp 
# Restituisce l'ora nel formato corretto voluto da touch.
# 

#Salvo in una nuova variabile per comodit?
$timestamp=$ARGV[0];
#Funzione che converte la data in stringa
($year,$month,$day, $hour,$min,$sec) = Time_to_Date($timestamp);
# Aggiungo gli zeri se necessario...
if ($month<10)
{
$month="0"."$month";
}
if ($day<10)
{
        $day="0"."$day";
}
if ($hour<10)
{
        $hour="0"."$hour";
}
if ($min<10)
{
        $min="0"."$min";
}
if ($sec<10)
{
        $sec="0"."$sec";
}



# Restituisco la data per touch
print "$year$month$day$hour$min.$sec";

---------- fine timestamp.pl ------------

<Prev in Thread] Current Thread [Next in Thread>