Comment comparez-vous efficacement 15 000 fichiers plusieurs fois?
-
19-08-2019 - |
Question
Je compare deux dossiers presque identiques contenant des dossiers cachés .svn qui doivent être ignorés et je souhaite comparer en permanence les dossiers car certains fichiers sont corrigés afin de comparer la différence sans vérifier les fichiers correspondants inchangés.
modifier: Comme il y a tellement d'options, je suis intéressé par une solution qui exploite clairement les connaissances de la comparaison précédente, car aucune autre solution n'est vraiment réalisable lors de comparaisons répétées.
La solution
Si vous êtes prêt à dépenser un peu d’argent, Beyond Compare est un outil de différenciation assez puissant, capable de gérer la différenciation par dossier.
Autres conseils
Une option serait d'utiliser rsync
. Quelque chose comme:
rsync -n -r -v -C dir_a dir_b
L'option -n
effectue un essai à sec afin qu'aucun fichier ne soit modifié. -r
effectue une comparaison récursive. Activez éventuellement le mode commenté avec -v
. (Vous pouvez utiliser -i
pour détailler les modifications au lieu de -v
.) Pour ignorer les fichiers généralement ignorés tels que .svn /
, utilisez -C
.
Cela devrait être plus rapide qu'un simple diff
car j'ai lu la page de manuel rsync
:
Rsync détecte les fichiers devant être transférés à l'aide d'un "contrôle rapide". algorithme (par défaut) qui recherche les fichiers dont la taille a changé ou en temps modifié en dernier. Tout changement dans l'autre préservé les attributs (comme demandé par les options) sont créés sur le fichier de destination directement lorsque la vérification rapide indique que les données du fichier ne sont pas besoin d'être mis à jour.
Depuis le "contrôle rapide" algorithme ne regarde pas directement le contenu du fichier, il pourrait être dupé. Dans ce cas, l'option -c
, qui effectue une somme de contrôle à la place, peut être nécessaire. Il est probable qu’il soit plus rapide qu’un diff
ordinaire.
En outre, si vous envisagez de synchroniser les répertoires à un moment donné, il s'agit également d'un bon outil pour ce travail.
Pas infaillible, mais vous pouvez simplement comparer les horodatages.
Utilisez Total Commander! Tous les développeurs sympas l'utilisent:)
Si vous êtes sur Linux ou sur une variante, vous devriez pouvoir faire:
invite $ diff -r dir1 dir2 --exclude = .svn
Le -r force les recherches récursives. Il y a un tas de commutateurs pour ignorer des choses comme les espaces blancs, etc.