Outil de comparaison de fichiers et de répertoires?


149

Je cherche quelque chose qui permettra de comparer des répertoires et des fichiers comme Beyond Compare le fait pour Windows.

C'est principalement pour l'utilisation du contrôle de source, mais je dois aussi l'utiliser pour le déploiement.


Voulez-vous seulement la liste de fichiers ou le contenu réel de chaque fichier?
Martin Ueding

Je veux la liste des fichiers et si possible les différents contenus entre les fichiers avec le même chemin.
isoman

2
Il serait utile que l’ interface graphique permette de masquer des dossiers et des fichiers identiques . Cela rendrait beaucoup plus facile de se concentrer sur les dossiers et fichiers impairs. Est-ce que quelqu'un connaît un outil qui prend en charge cette fonctionnalité?
JJD

Regardez à l' unisson . Au-delà de la comparaison, l’approche du «guichet unique fait tout», tandis que l’unisson se concentre sur la gestion de la traversée des arbres, le maintien de l’état et la propagation des modifications, et couvre les fonctionnalités de Beyond Compare en délégant des fonctions telles que diff, fusion à 3 voies, etc. programme préféré travaillant au niveau du fichier. Unison est un logiciel gratuit, très robuste et mature, capable de détecter et de synchroniser rapidement d’énormes arbres via un réseau entre différents systèmes d’exploitation, etc. Lisez tout d’abord la doc, en particulier sous Windows.
Stéphane Gourichon

emacs dispose d'un outil de comparaison d'annuaire. Comme tout dans emacs, le bonbon à l'œil est, eh bien, "qu'est-ce que le bonbon à l'œil veut-il dire?" Différences codées avec diverses options, fusionner de manière interactive, propager ou effectuer des modifications arbitraires sur des fichiers, accéder facilement au fichier ou répertoire suivant, en gardant la trace de l'état, avec toutes les fonctionnalités d'édition habituelles.
Stéphane Gourichon

Réponses:


175

Fusioninstaller la fusion

Meld est un outil qui permet de comparer et de fusionner des fichiers et des répertoires. C'est une interface graphique analogique aux outils standard diff installer diffutilset en patch installer un correctifligne de commande. (Voir man diff et man patch pour plus de détails sur ceux-ci)

entrez la description de l'image ici

En outre, de nombreux systèmes de contrôle de source (tels que bzr installer bzr-gtkou git installer git) ont la possibilité de créer des différences entre les versions.


2
Meld est incroyable. Je l'utilise comme mon diff de contrôle de source.
Matt Joiner

12
Vient d’essayer sur un dossier plus volumineux - 4 Go, 2 000 fichiers. La fonctionnalité de la fusion est comme vous le souhaitez. Mais pour ce dossier, la fusion est extrêmement lente et l'interface utilisateur ne répond pas (blocs). Utiliser rsync maintenant.
geekQ

1
Fonctionne également très bien pour comparer des fichiers texte côte à côte ou même pour copier / coller des éléments. Meilleure interface que j'ai vue!
Stefan Rogin

@geekQ est une alternative rapide, capable de gérer instantanément un dossier aussi volumineux que vous le souhaitez, voir beyond compareci - dessous. supérieur à
meld imho

Meld se bloque à chaque fois que je veux sélectionner un dossier: / J'ai la dernière version disponible sur mon référentiel de distribution (Ubuntu 14.04)
Youda008

44

Diff est ton ami.

diff -ur path1 path2

Cela comparera tous les fichiers communs entre path1 et path2.

Si vous passez -urà, -urNcela affichera également le contenu des fichiers qui ne sont présents que dans l'un des chemins.


1
Installé colordiffet utilisécolordiff -ur path1 path2
warvariuc

Ne fonctionne pas dans cygwin.
Tomáš Zato


13

Utilisez la diffcommande:

diff -u file1 file2

diff -usélectionne un format avec quelques lignes de contexte. Une plaine diff file1 file2ne répertorie que les différentes lignes. Il existe de nombreuses autres options pour contrôler le format de sortie, ignorer les différences d’espace, etc.

Si vous voulez écrire la sortie dans un fichier, redirigez-le:

diff -u file1 file2 >file1-file2.diff

12

Commandant de gnomeinstaller Gnome Commander

L'interface n'est peut-être pas très sexy, mais extrêmement puissante!

texte alternatif

Et si vous aviez l'habitude de * Commander (comme Norton, ou autres), vous ne serez pas perdu.


1
Je ne l'ai pas utilisé pour comparer 2 fichiers, mais je l'ai utilisé pour me dire quels fichiers étaient différents lors de la comparaison avec des répertoires. Ceci est particulièrement utile lors du tri de photographies ;-)
Huygens

10

Outils de ligne de commande

Inspiré par cette entrée de blog .

diff

Liste des différents fichiers:

diff -qr folder1 folder2

Lister aussi le contenu:

diff -Naur folder1 folder2

rsync

Si les deux répertoires ne sont pas sur la même machine, rsyncla solution la plus simple pourrait être. rsyncEst généralement utilisé pour synchroniser les répertoires, mais vous pouvez l'exécuter en mode verbose et dry, de sorte qu'il ne répertorie que les fichiers qu'il devrait modifier.

rsync -rvnc --delete folder1 server:/path/to/folder2

cSi vous souhaitez comparer des fichiers en fonction de leur horodatage et de leur taille, vous pouvez omettre de les accélérer:

rsync -rvn --delete folder1 server:/path/to/folder2

9

Krusaderinstaller krusader

Krusader est un outil gratuit (disponible dans le Centre logiciel) qui permet de comparer le contenu des dossiers et vous permet de synchroniser de nombreuses options. Vous pouvez filtrer lors de la synchronisation et de la comparaison.

Krusader

Pour comparer le contenu d'un fichier, il vous suffit de marquer deux fichiers, sélectionnez "fichier"> "comparer le contenu" et ils sont comparés lettre par lettre. l'outil de comparaison par défaut utilisé par krusader est l'outil par défaut de KDE " Kompare ". Vous pouvez configurer krusader pour utiliser tout autre outil de comparaison, comme par exemple l'un des outils ci-dessus.

C'est la solution la plus complète que j'ai jamais trouvée et c'est très pratique. Et il supporte toutes les fonctions keybindungs ​​utilisées par midnight commander (syntaxe norton commander).


Vous pouvez également utiliser "Outils -> Synchroniser les répertoires" pour obtenir une vue des modifications de fichiers récursives des deux panneaux de répertoires.
Angelos Pikoulas

malheureusement, le synchroniseur dans krusader n'est pas maintenu: bugs.kde.org/show_bug.cgi?id=270150#c7 . Existe-t-il une alternative activement maintenue?
rubo77

1
@ rubo77: ce bug a été corrigé entre-temps.
mardi

9

KDiff3 installer kdiff3

C'est une interface graphique à diff pour les utilisateurs de KDE (ou si cela ne vous dérange pas d'utiliser les applications Qt).

kdiff3

Il y a aussi dirdiff installer dirdiff pour les répertoires.



4

Unison est un outil de synchronisation de fichiers rapide qui utilise l'algorithme rsync et vous permet de prévisualiser les différences avant la mise à jour entre deux emplacements, qu'ils soient distants ou locaux.


4

J'ai entendu parler de hashdeep il y a deux semaines. Et cela présente de gros avantages:

  • Contrairement à meldcela, cela fonctionne bien pour les très grands dossiers. Où melddevient extrêmement lent et l'interface utilisateur ne répond pas (bloqué), hashdeep fonctionne simplement à une vitesse constante
  • Contrairement à rsynchashdeep, hashdeep détecte les fichiers déplacés - des fichiers avec le même contenu, dans un répertoire différent.

La sortie verbeuse est comme:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

4

Un bon moyen de faire cette comparaison est d'utiliser " find " avec " md5sum ", puis " diff ".

Exemple:

Utilisez find pour lister tous les fichiers du répertoire, puis calculez le hachage md5 pour chaque fichier et dirigez-le vers un fichier:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

Effectuez la même procédure dans un autre répertoire:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

Comparez ensuite le résultat avec deux fichiers "diff":

$diff dir1.txt dir2.txt

Cette stratégie est très utile lorsque les deux répertoires à comparer ne se trouvent pas sur le même ordinateur et que vous devez vous assurer que les fichiers sont égaux dans les deux répertoires.

Un autre bon moyen de faire le travail est d'utiliser git

git diff --no-index dir1/ dir2/

Meilleures salutations!


3

Essayez aussi FreeFileSync . Il a une interface décente, une vitesse de comparaison acceptable, un bon filtrage du résultat de la comparaison, différents modes de synchronisation. Il est livré avec un outil de surveillance des dossiers (RealTimeSync) qui peut lancer FreeFileSync (en réalité n'importe quelle commande ou script) lorsque ce ou ces dossiers spécifiques ou les fichiers qu’ils contiennent sont modifiés. Vaut vraiment le coup d'essayer.

Plus d'infos à ce sujet ici ou ici , où vous avez un PPA , aussi

De leur page, les principales caractéristiques:

Comparez les fichiers (par octets ou par date) et synchronisez-les.

Pas de limitation: un nombre arbitraire de fichiers peut être synchronisé.

Prise en charge Unicode.

Support réseau.

Prise en charge intégrée des noms de fichiers très longs (plus de MAX_PATH = 260 caractères).

Base de données de synchronisation pour la propagation des fichiers supprimés et la détection des conflits

Prise en charge de plusieurs paires de dossiers avec une configuration distincte

Prise en charge complète des liens symboliques Windows / Linux et des points de jonction Windows.

Interface utilisateur simple et facilement accessible: hautement optimisée pour la vitesse et d'énormes ensembles de données.

Algorithmes entièrement codés en C ++.

Tous les indicateurs de progrès optimisés pour une performance maximale!

Créez des travaux par lots pour une synchronisation automatisée avec ou sans interface graphique.

Focus sur la convivialité:

Seules les fonctionnalités nécessaires sur l'interface utilisateur: pas de menus surchargés ni d'icône jungle.

Sélectionnez tous les dossiers par glisser-déposer.

La dernière configuration utilisée et les paramètres d’écran sont enregistrés automatiquement.

Maintenir et charger différentes configurations par glisser-déposer, bouton de chargement ou ligne de commande.

Double-cliquez pour démarrer une application externe (par exemple, afficher le fichier dans l'Explorateur Windows).

Copier et coller toutes les données de la grille sous forme de texte

Supprimez les fichiers superflus / temporaires directement sur la grille principale.

Cliquez avec le bouton droit sur le menu contextuel.

Informations d'état complètes et rapport d'erreurs

Triez les listes de fichiers par nom, taille ou date.

Prise en charge des fichiers de plus de 4 Go.

Possibilité de déplacer les fichiers vers la corbeille au lieu de les supprimer / les écraser.

Ignorez les répertoires "\ RECYCLER" et "\ System Volume Information" avec le filtre par défaut. (Windows seulement)

Des versions localisées sont disponibles pour de nombreuses langues.

Supprimer avant copie: évitez les pénuries d'espace disque pour les travaux de synchronisation volumineux.

Fonctionnalité de filtrage pour inclure / exclure des fichiers de la synchronisation (sans requérir une nouvelle comparaison!).

Inclure / exclure temporairement des fichiers spécifiques de la synchronisation.

Gérer automatiquement les changements d'heure d'été sur les volumes FAT / FAT32.

Version portable disponible (sélectionnable via l'installateur).

Version 64 bits native.

Recherchez les mises à jour à partir de FreeFileSync automatiquement.

Copiez les fichiers verrouillés à l'aide du service de cliché instantané des volumes Windows. (Windows seulement)

Créez des sauvegardes régulières avec les macros% temps%,% date% dans les noms de répertoire

Copier les temps de création / accès / modification du fichier et du dossier lors de la synchronisation

Stratégie de verrouillage avancée permettant plusieurs processus de synchronisation (par exemple plusieurs rédacteurs, même partage réseau)

J'ajouterais qu'il peut gérer les fichiers supprimés, en les déplaçant vers la Corbeille ou vers un dossier spécifié par l'utilisateur. Pour signaler un inconvénient, la documentation du programme est plutôt centrée sur Windows et moins sur Linux. Mais il fait bien son travail.


3

Vous pouvez utiliser diffuse:

sudo apt-get install diffuse
diffuse file1 file2

2
J'utilise souvent la fonctionnalité Diffuse pour un tueur - la possibilité de définir manuellement les ancres de fusion. Il ne fait pas (encore) de répertoires, mais pour les différences individuelles et désordonnées, la fonctionnalité d'ancrage est géniale.
Sk606

2

Vous pouvez essayer de fondre .

Ce sont les référentiels et fournit une interface graphique pour la comparaison de fichiers ou de dossiers.


1
Meld est une interface graphique pour diff, btw.
Marco Ceppi

1

Eclipse IDE est un peu lourd si vous ne faites que des comparaisons, mais il fait un bon travail dans ce domaine, entre autres. Vous pouvez sélectionner 2 projets, chemins ou fichiers et les comparer, ainsi que vous synchroniser avec les serveurs de contrôle de source.


1

IMHO FreeFileSync est très bon et plus utile que Meld. Il est rapide et stable, peut effectuer des synchronisations personnalisables et peut également exporter le résultat de la comparaison dans un fichier csv.

Lien Lanchpad



0

Comparer des fichiers

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Vous pouvez utiliser la commande cmp:

cmp -b "File_1.txt" "File_2.txt"

la sortie serait

a b differ: byte 11, line 2 is  62 2  40  

Pour comparer les dirs (votre besoin):

vous pouvez utiliser la commande diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.