Newsgroup: it.comp.os.linux.iniziare
Titolo: Confrontare i files di due directories

Ho due directories che contengono a loro volta altre
subdir e files di vari tipi, testo binari ecc.
La prima directory la chiamiamo ORIG, la seconda
UPDATE, questo perchč la seconda a discende dalla prima
dopo aver subito un aggiornamento attraverso un
software particolare.
Sto cercando di capire cosa esattamente ha fatto quel
software per cui sto partendo dal conteggio dei vari
files:
- invariati
- eliminati
- aggiunti
- aggiornati
In pratica vi č una terza directory da cui il programma
pesca vari files con cui aggiornare la dir ORIG
tramutandola nella UPDATE.
Alcuni di questi files vanno a sovrascrivere quelli
omonimi della ORIG, ma potrebbero essere identici,
altri ivece sono omonimi ma differenti e contribuiscono
al numero degli aggiornati.
Ho iniziato a lavorare con wc, grep, find, diff.
Vorrei da voi qualche consiglio per contare le
categorie di files elencati lě sopra.
Se non sono stato abbastanza chiaro, chiedete pure.

 - aggiornati
diff -rs dir1 dir2 ti dice tutto

 diff -rs dir1 dir2 ti dice tutto
Il problema è che mi dice anche troppo, nel senso che
ottengo anche le righe differenti nei vari files di
testo.
Invece per il momento volevo solo contare i vari files
che ogni categoria comprende. In tal caso è corretto
aggiungere anche l'opzione -q ?
Da quanto vedo dovrebbe evitare di mandare in output
quali sono le differenze nei vari files e limitarsi a
dire se sono differenti... o sbaglio?
In altre parole:
diff -rsq dir1 dir2
va bene o no?
Grazie in ogni caso.  :-)

 va bene o no?
Ho fatto la seguente prova:
1- conto file totali directory SOURCE (con find + wc)
2- conto files totali directory TARGET ("          ")
3- diff -rsq ... > totaldiff.txt
4- conto files presenti solo in SOURCE
   (cat totaldiff |grep "Only in $SOURCE"|wc -l)
5- conto files presenti solo in TARGET (idem come
   sopra)
6- conto files omonimi identici
   (cat totaldiff |grep "identical"|wc -l)
7- conto files omonimi differenti
   (cat tot... |grep "differ" ...)
8- conto file totali comparati
   (cat totdiff.txt| wc -l)
Riporto i risultati:
1- 6059 (tot. patenza)
2- 6420 (tot. fineoperazione)
4-  109 (rimossi)
5-  433 (aggiunti)
6- 3905 (invariati)
7- 2045 (aggiornati)
8- 6492 (tot comparati)
-----------------------
Verifiche varie:
A) comparati = aggiornati + invariati + aggiunti +
                                      + rimossi ??
   6492      =       2045 + 3905 + 433 + 109
   .OK
Quindi tutti i files comparati rientrano solo nelle
categorie desscritte, non ci sono altre categorie.
B) tot.partenza - rimossi + aggiunti = tot.fine opera
   6059 - 109 + 433                  =       6420
                           6383      <       6420
   .NO : Ci sono ben  "37"  files comparati in più
---------------------------------------------------
Quindi il discorso non torna. Perchè secondo voi?

Quindi il discorso non torna. Perchè secondo voi?
Tieni presente che se non ricordo male diff -qrs non
riporta i file di subdirectory non comuni.
-- 
Saluti, Dalet



esatto


Prova:
_______________
test$ mkdir tmp
test$ cd tmp/
test/tmp$ mkdir src trg
test/tmp$ mkdir src/dir1
test/tmp$ mkdir src/dir2
test/tmp$ mkdir trg/dir1
test/tmp$ touch src/dir1/pippo
test/tmp$ touch src/dir2/pluto
test/tmp$ touch trg/dir1/pippo
test/tmp$ diff -rqs src trg
Files src/dir1/pippo and trg/dir1/pippo are identical
Only in src: dir2
_____________________________________________________
Hai ragione.
Quindi l'inghippo sta in diff.
Però ora allora come faccio per capire la natura dei
files della dir target?
Inizierò col man diff, magari c'è un'opzione per
considerare solo i files regolari e non le dir.
Grazie mille Dalet,
ciao.