Allora ... riassumiamo così: tu hai 2 file identici (stesso nome, data/ora, ecc...) messi ognuno in una sua directory e devi controllare se avvengono delle modifiche su uno o sull'altro??? È giusto??Originariamente inviato da valer_85
bisogna vedere se il contenuto è diverso, xkè x ogni file nella cartella viene creato un file filediff.java in cui vanno scritte le modifiche...
Comunque, in generale, si potrebbe fare così. Usi l'opzione -nt di test (quindi if [ $FILE1 -nt $FILE2 ]) per vedere se uno è più recente dell'altro. A quel punto fai un bel diff.
Spero di aver detto bene.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
uhm... buona idea...
cmq nn è proprio così:
ho 2 cartelle piene di file che inizialmente sono identici, una cartella rimane sempre =, mentre il contenuto dell'altra POTREBBE cambiare...
la cosa particolare, di cui nn capisco l'utilità, è che PER OGNI file dev'essere creato un file filediff.estensione che dev'essere riempito con le eventuali modifiche...
esempio: c'è il file prova.java che viene modificato aggiungendo una riga "ciao".
il file provadiff.java che era stato precedentemente creato e che inizialmente era vuoto, dev'essere editato e si deve aggiungergli "ciao"...
capito? è un pò intricato...![]()
V+K
Ciao ... in effetti è decisamente un po' intricato. Ci ho dovuto pensare un bel po' ma poi ho visto che è perfettamente fattibile (certo ... non è banale).Originariamente inviato da valer_85
uhm... buona idea...
cmq nn è proprio così:
ho 2 cartelle piene di file che inizialmente sono identici, una cartella rimane sempre =, mentre il contenuto dell'altra POTREBBE cambiare...
la cosa particolare, di cui nn capisco l'utilità, è che PER OGNI file dev'essere creato un file filediff.estensione che dev'essere riempito con le eventuali modifiche...
esempio: c'è il file prova.java che viene modificato aggiungendo una riga "ciao".
il file provadiff.java che era stato precedentemente creato e che inizialmente era vuoto, dev'essere editato e si deve aggiungergli "ciao"...
capito? è un pò intricato...![]()
Io ti posto il codice che ho scritto per fare delle prove:
Non so però cosa possa esserti chiaro o no di questo script.codice:#!/bin/bash DIR=$1 FCHECK=/tmp/fcheck.$$.tmp FCHECK2=/tmp/fcheck2.$$.tmp function cleanup () { rm $FCHECK $FCHECK2 2>/dev/null exit 0 } trap cleanup SIGINT touch $FCHECK $FCHECK2 while true; do for FILE in $DIR/*; do if [ $FILE -nt $FCHECK ]; then echo "file aggiornato: $FILE" if [ $FILE -nt $FCHECK2 ]; then touch -m -r $FILE $FCHECK2 fi fi done cp -p $FCHECK2 $FCHECK sleep 10 done
Il concetto è comunque semplice. Filtrare ed ottenere tutti i file che hanno un "modification time" più recente di quello di un file temporaneo che nel mio script è indicato con $FCHECK. Alla fine di ogni ciclo (prima della sleep) si fa in modo che questo file di check abbia il modification time uguale a quello del file più recente fino a quel momento, in modo che nel ciclo successivo possano essere filtrati solo i file che sono più recenti ancora di quelli filtrati nel ciclo precedente.
Se non è chiaro ... fammi sapere.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
grazie mille! xò non è molto chiaro effettivamente![]()
cmq funziona, il problema, almeno da quel ke mi sembra, è che non scrive le modifiche nel file file-diff.blabla... cioè, te lo rispiego xkè è veramente intricato da capire, l'ho dovuto leggere un bel pò di volte![]()
oltre a rilevare il file che è stato modificato ( e fino qui la tua fatica non è stata inutile) bisogna scrivere la modifica effettuata su un file a parte chiamato diff-nomefileoriginario.estensioneoriginaria ...
spero di essere stato chiaro.
grazie ancora
V+K
Ah beh ... quello devi farlo tu ...Originariamente inviato da valer_85
cmq funziona, il problema, almeno da quel ke mi sembra, è che non scrive le modifiche nel file file-diff.blabla...![]()
Io mi sono concentrato solo sull'algoritmo di ricerca dei file modificati basandosi sul loro modification time.
Una volta che è stato trovato un file modificato, allora fai il diff e tutto quello che vuoi. Dovrebbe essere, credo, abbastanza semplice.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok, sto provando...
allora,
il file modificato sarebbe $FILE giusto? e il file vecchio $FCHECK ?codice:if [ $FILE -nt $FCHECK ]; then echo "file aggiornato: $FILE"
se è così ho provato a fare:
xò mi stampa tutto! così:codice:echo differenza: `diff $FILE $FCHECK`
la modifica era solo "cavolo"... :master:codice:differenza:1,12d0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < cavolo < < < <
V+K
mi sono accorto ora che forse la cosa è + semplice di come hai fatto tu...
xkè la modifica è da rilevare rispetta a un file che non cambia mai, contenuto in un'altra dir...
ti ricordi l'inizio dell'esercizio? ci sono 2 cartelle: una che nn cambia mai di contenuto, e l'altra in cui possono essere cancellati / aggiunti /modificati dei file... inizialmente quindi il contenuto è lo stesso, poi le modifiche devono essere rilevate rispetto al file corrispondente nella prima cartella, e non rispetto allo stato passato del file...
V+K
Ah beh, quindi tu ogni X secondi fai il diff di tutti i file nelle 2 cartelle??? Ottimo ... ecco come sprecare il tempo di CPU.Originariamente inviato da valer_85
mi sono accorto ora che forse la cosa è + semplice di come hai fatto tu...
xkè la modifica è da rilevare rispetta a un file che non cambia mai, contenuto in un'altra dir...
ti ricordi l'inizio dell'esercizio? ci sono 2 cartelle: una che nn cambia mai di contenuto, e l'altra in cui possono essere cancellati / aggiunti /modificati dei file... inizialmente quindi il contenuto è lo stesso, poi le modifiche devono essere rilevate rispetto al file corrispondente nella prima cartella, e non rispetto allo stato passato del file...![]()
Comunque $FCHECK non è il file vecchio ... è un file temporaneo lungo 0 byte che ha il solo scopo di "tenere" il modification time.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet