Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparer plusieurs fichiers entre eux ?

2 réponses
Avatar
ctobini
Bonjour,

Je voudrais comparer plusieurs fichiers (beaucoup), =E0 la mani=E8re d'un
'diff' unixien afin de voir s'il y a des doublons ou plus.

Sauriez-vous si un module permet de faire ceci ?

Merci.

C=2E Tobini

2 réponses

Avatar
Paul Gaborit
À (at) 14 Feb 2006 07:28:14 -0800,
"ctobini" écrivait (wrote):
Je voudrais comparer plusieurs fichiers (beaucoup), à la manière d'un
'diff' unixien afin de voir s'il y a des doublons ou plus.


Si le résultat de 'cmp' (à la place de 'diff') vous convient aussi, le
plus simple me semble de calculer la signature MD5 ou SHA1 (via
Digest::MD5 et Digest::SHA1) de chacun des fichiers et de repérer ceux
qui ont la même signature pour ensuite les comparer réellement (avec
déjà une quasi certitude qu'ils seront identiques).

Cet algorithme est en O(n).

Sauriez-vous si un module permet de faire ceci ?


Si vous tenez aussi à récupérer le résultat du 'diff' en cas de
différences, regardez du côté du module 'Algorithm::Diff'.

Là, c'est du O(n**2).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
gerbier
ctobini wrote:
Bonjour,

Je voudrais comparer plusieurs fichiers (beaucoup), à la manière d'un
'diff' unixien afin de voir s'il y a des doublons ou plus.

Sauriez-vous si un module permet de faire ceci ?


un module, je ne sais pas, mais il existe un programme perl qui fait ça
: dupseek ( http://www.beautylabs.net/software/dupseek.html )

comme la comparaison par checksum est assez couteuse, il commence par
faire un classement par taille