>>>>> On Sun, 29 Jul 2001 23:15:25 +0200, Ferdinando <[EMAIL PROTECTED]> said:
F> * domenica 29 luglio 2001, alle 10:13, Lele Gaifax scrive: >> L'opzione `-ctime' dice: >> >> -ctime n File's status was last changed n*24 hours ago. >> >> che detta in italiano sarebbe "accetta i file modificati N o >> più ore fa". F> -ctime n Lo stato del file ha subito l'ultima modifica n*24 ore F> fa. F> Questo è il man in Italiano, sai io e l'Inglese non andiamo F> troppo d'accordo e quando è possibile cerco documentazione in F> Italiano. F> Comunque mi sa che il numero dopo il -ctime se 1 dovrebbe F> corrispondere a 24 ore Certo, scusa, grossa svista! F> però per sicurezza ho sostituito -ctime F> con -cmin (che è lo stesso comando in nminuti) e sai che ho F> scoperto ? F> Mi cancella il file di log, TUTTO il file non le righe con data F> antecedente, quindi l'ho dovuto "ricostruire" con touch. Infatti, come ti ho detto, quel comando NON guarda nemmeno il *contenuto* del file in questione! Filtrare sul contenuto è un tantino più difficile: dovresti leggere il file riga per riga, grosso modo con questo codice cat /var/log/debug | while read linea; do ... done A questo punto, al posto dei `...', dovresti mettere del codice che a) separa l'istante iniziale # Scomponi $linea separando le varie parole, ed estrai le prime 3 set $linea && mese=$1 && giorno=$2 && ora=$3 # Riassembla l'istante, aggiungendo l'anno che non c'è nel file istante="$mese $giorno $ora 2001" b) trasforma l'istante in un numero confrontabile facilmente, ad esempio i secondi dal 1/1/1970 secondi=$(date -d "$istante" +"%s") c) emette la riga solo se questo numero è maggiore del riferimento che ti vuoi # Calcola lo stesso numero di secondi per l'istante di # riferimento, in questo caso il 1 gennaio 2001 riferimento=$(date -d "00:00:00 2001-01-01" +"%s") if [ $secondi -ge $riferimento]; then echo $linea; fi Riordinando il tutto, questo dovrebbe andare, anche se un po' grezzino... :-) # Calcola lo stesso numero di secondi per l'istante di # riferimento, in questo caso il 1 gennaio 2001 riferimento=$(date -d "00:00:00 2001-01-01" +"%s") cat /var/log/debug | while read linea; do # Scomponi $linea separando le varie parole, ed estrai le prime 3 set $linea && mese=$1 && giorno=$2 && ora=$3 # Riassembla l'istante, aggiungendo l'anno che non c'è nel file istante="$mese $giorno $ora 2001" # Trasformalo in secondi dall'istante "0" (1/1/1970) secondi=$(date -d "$istante" +"%s") # Se l'istante in questione è maggiore o uguale al # riferimento, emetti la riga letta su stdout if [ $secondi -ge $riferimento]; then echo $linea; fi done A questo punto, supponendo che lo scriptino qui sopra si chiami "filtra2001", dovresti essere in grado di fare qc del tipo mv debug debug.completo cat debug.completo | filtra2001 > debug hth, ciao, lele. -- nickname: Lele Gaifax | Quando vivro' di quello che ho pensato ieri real: Emanuele Gaifas | comincero' ad aver paura di chi mi copia. email: [EMAIL PROTECTED] | -- Fortunato Depero, 1929.