Script di comparazione file [RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Burroughs
Linux 2.6
Linux 2.6
Messaggi: 974
Iscritto il: mer dic 15, 2004 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Lago Patria (NA)
Contatta:

Script di comparazione file [RISOLTO]

Messaggioda Burroughs » lun giu 27, 2016 22:46

Buona sera a tutti!
Entro direttamente nel dettaglio del mio problema, perché mi sa che è più facile fare così che spiegarlo in altro modo... :?
Allora, in una directory x ho due file, prova1.txt e prova2.txt.
Mi servirebbe uno script, che, a intervalli regolari, comparasse i due file e provvedesse a rimuovere il più vecchio, badando però (e qui sta il difficile) di non eliminare il file prova*.txt che dovesse rimanere da solo.
Ad esempio, se eseguo ogni trenta secondi il seguente script:

Codice: Seleziona tutto

#!/bin/bash
#
FILE="$(ls -tr1 prova*|head -1)"
rm "$FILE"

la prima volta verrà rimosso il file più vecchio dei due, la seconda volta l'unico eventualmente rimasto.
Ecco, come posso fare per evitare questa seconda situazione???

Grazie...
Ultima modifica di Burroughs il mar giu 28, 2016 12:25, modificato 1 volta in totale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer ago 29, 2007 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena
Contatta:

Re: Script di comparazione file

Messaggioda Ansa89 » lun giu 27, 2016 23:31

Codice: Seleziona tutto

cd x
files=(`ls -tr prova*.txt`)
while [ -n "${files[1]}" ] ; do
    rm ${files[0]}
    files=(`ls -tr prova*.txt`)
done


Nota: ho scritto di getto, senza test approfonditi.
Ultima modifica di Ansa89 il mar giu 28, 2016 9:04, modificato 1 volta in totale.

Avatar utente
Burroughs
Linux 2.6
Linux 2.6
Messaggi: 974
Iscritto il: mer dic 15, 2004 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Lago Patria (NA)
Contatta:

Re: Script di comparazione file

Messaggioda Burroughs » mar giu 28, 2016 8:51

Grazie, Ansa,

Lo script, però, mi restituisce questo output di errore:

Codice: Seleziona tutto

/usr/local/bin/oldst: riga 6: EOF non atteso durante la ricerca di """
/usr/local/bin/oldst: riga 10: errore di sintassi: EOF non atteso

Cosa può essere?
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer ago 29, 2007 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena
Contatta:

Re: Script di comparazione file

Messaggioda Ansa89 » mar giu 28, 2016 9:04

Colpa mia: mi ero dimenticato una parentesi graffa.

Avatar utente
Burroughs
Linux 2.6
Linux 2.6
Messaggi: 974
Iscritto il: mer dic 15, 2004 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Lago Patria (NA)
Contatta:

Re: Script di comparazione file

Messaggioda Burroughs » mar giu 28, 2016 9:07

Me lo potresti riscrivere quando hai un attimo?
Grazie...
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer ago 29, 2007 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena
Contatta:

Re: Script di comparazione file

Messaggioda Ansa89 » mar giu 28, 2016 9:21

Avevo già editato lo script della mia prima risposta; comunque lo riporto anche qui:

Codice: Seleziona tutto

cd x
files=(`ls -tr prova*.txt`)
while [ -n "${files[1]}" ] ; do
    rm ${files[0]}
    files=(`ls -tr prova*.txt`)
done

Avatar utente
Burroughs
Linux 2.6
Linux 2.6
Messaggi: 974
Iscritto il: mer dic 15, 2004 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Lago Patria (NA)
Contatta:

Re: Script di comparazione file

Messaggioda Burroughs » mar giu 28, 2016 12:28

Ansa89 ha scritto:Avevo già editato lo script della mia prima risposta; comunque lo riporto anche qui: [CUT]

Ooops, scusami, stavo col cellulare, non me ne sono accorto.
Ti ringrazio, lo script "works like a charm", come dicono gli eruditi... :D
Ancora grazie e alla prossima.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer ago 29, 2007 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena
Contatta:

Re: Script di comparazione file [RISOLTO]

Messaggioda Ansa89 » mar giu 28, 2016 13:31

Sono contento che tu abbia risolto :) .