Strumento di confronto di file e directory?


149

Sto cercando qualcosa che confronterà directory e file come Beyond Compare fa per Windows.

È principalmente per l'uso del controllo del codice sorgente, ma devo utilizzarlo anche per la distribuzione.


Vuoi solo l'elenco dei file o il contenuto effettivo di ciascun file?
Martin Ueding,

Voglio l'elenco dei file e, se possibile, i diversi contenuti tra i file con lo stesso percorso.
Isoman,

2
Sarebbe utile se lo strumento GUI consente di nascondere cartelle e file identici . Ciò renderebbe molto più semplice concentrarsi su cartelle e file dispari. Qualcuno conosce uno strumento che supporta questa funzione?
JJD,

Dai un'occhiata all'unisono . Beyond compare si avvicina all'approccio dello "sportello unico", mentre all'unisono si concentra sulla gestione degli spostamenti degli alberi, il mantenimento dello stato e la propagazione delle modifiche, coprendo le funzionalità Beyond Compare delegando cose come diff, unione a 3 vie, ecc. A qualunque sia il tuo programma preferito funzionante a livello di file. Unison è un software gratuito, molto robusto e maturo, in grado di rilevare e sincronizzare rapidamente alberi enormi, attraverso la rete tra diversi sistemi operativi, ecc. Leggi prima il documento, specialmente su Windows.
Stéphane Gourichon,

emacs ha uno strumento di confronto delle directory. Come tutto ciò che emacs, il piacere dell'occhio è, beh, "cosa significa anche il piacere dell'occhio?", Eppure mostra un aiuto contestuale con i tasti, consente con poche sequenze di tasti un'analisi ricorsiva, nasconde file identici o persino sottocadi, scegli interattivamente i file per mostrare il colore differenze codificate con varie opzioni, unire, propagare o eseguire in modo interattivo modifiche arbitrarie sui file, passare facilmente al file o alla directory successiva, tenendo traccia dello stato, con tutte le normali funzionalità di modifica.
Stéphane Gourichon,

Risposte:


175

meldinstallare la fusione

La combinazione è uno strumento che può confrontare e unire file e directory. È un analogo della GUI per gli strumenti standard diff installa diffutilse della patch installa patchriga di comando. (Vedi man diff e man patch per maggiori dettagli su quelli)

inserisci qui la descrizione dell'immagine

Inoltre, molti sistemi di controllo del codice sorgente (come bzr installa bzr-gtko git installa git) hanno la possibilità di creare differenze tra le versioni.


2
La fusione è INCREDIBILE. Lo uso come diff del mio controllo del codice sorgente.
Matt Joiner,

12
Ho appena provato su una cartella più grande - 4 GB, 2000 file. La funzionalità di fusione è come desiderato. Ma per questa combinazione di cartelle è estremamente lento e l'interfaccia utente non risponde (blocchi). Usando rsync ora.
geekQ

1
Funziona egregiamente anche nel confrontare i file di testo fianco a fianco, o addirittura copiare oggetti incollati. La migliore interfaccia che abbia mai visto!
Stefan Rogin,

@geekQ come alternativa veloce, in grado di gestire una cartella di grandi dimensioni come desideri istantaneamente, vedi beyond comparesotto. superior to meld imho
phil294

La fusione si arresta ogni volta che voglio selezionare una cartella: / Ho la versione più recente disponibile sul mio repository di distribuzione (Ubuntu 14.04)
Youda008

44

Diff è tuo amico.

diff -ur path1 path2

Ciò confronterà tutti i file comuni tra path1 e path2.

Se cambi -ura -urNallora, questo mostrerà anche il contenuto dei file che sono presenti solo in uno dei percorsi.


1
Installato colordiffe usatocolordiff -ur path1 path2
warvariuc il

Non funziona su Cygwin.
Tomáš Zato,


13

Usa il diffcomando:

diff -u file1 file2

diff -useleziona un formato con poche righe di contesto. Una pianura diff file1 file2elenca solo le diverse linee. Esistono molte altre opzioni per controllare il formato di output, ignorare le differenze di soli spazi, ecc.

Se si desidera scrivere l'output in un file, reindirizzarlo:

diff -u file1 file2 >file1-file2.diff

12

Comandante Gnomoinstalla Gnome Commander

L'interfaccia potrebbe non essere molto sexy, ma è estremamente potente!

testo alternativo

E se eri abituato ad altri * comandanti (come Norton o simili), non ti perderai.


1
Non l'ho usato per confrontare 2 file, ma l'ho usato per dirmi quali file erano diversi durante il confronto con le directory. Ciò è particolarmente utile quando si ordinano le fotografie ;-)
Huygens,

10

Strumenti da riga di comando

Ispirato da questo post di blog .

diff

Elenco di file diversi:

diff -qr folder1 folder2

Elenco anche contenuto:

diff -Naur folder1 folder2

rsync

Se le due directory non si trovano sulla stessa macchina, rsyncpotrebbe essere la soluzione più semplice. Di solito rsyncviene utilizzato per sincronizzare le directory, ma è possibile eseguirlo in modalità dettagliata e asciutta, quindi elencherà solo i file che dovrebbe cambiare.

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

Puoi omettere cse desideri confrontare i file in base a timestamp e dimensioni dei file per accelerare tutto:

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

9

Krusaderinstalla krusader

Krusader è uno strumento gratuito (disponibile nel Software Center) che mostra i contenuti delle cartelle a confronto e che puoi sincronizzare con molte opzioni diverse. Puoi filtrare durante la sincronizzazione e il confronto.

Krusader

Per confrontare il contenuto del file, è sufficiente contrassegnare due file selezionare "file"> "confronta contenuto" e vengono confrontati lettera per lettera. lo strumento di confronto predefinito utilizzato da krusader è lo strumento di KDE predefinito " Kompare ". Puoi impostare Krusader in modo che utilizzi qualsiasi altro strumento di confronto, come ad esempio uno dei precedenti.

Questa è la soluzione più completa che abbia mai trovato ed è molto conveniente. E supporta tutte le combinazioni di tasti funzione utilizzate dal comandante di mezzanotte (sintassi del comandante norton).


È inoltre possibile utilizzare "Strumenti -> Sincronizza directory" per ottenere una visualizzazione delle modifiche ai file ricorsivi dei due pannelli delle directory.
Angelos Pikoulas,

sfortunatamente il sincronizzatore in krusader non è mantenuto: bugs.kde.org/show_bug.cgi?id=270150#c7 . Esiste un'alternativa che viene attivamente mantenuta?
rubo77,

1
@ rubo77: questo errore è stato corretto nel frattempo.
lunedì

9

KDiff3 installa kdiff3

È un front-end grafico per diff per gli utenti di KDE (o se non ti dispiace usare le app Qt).

KDiff3

C'è anche dirdiff installa dirdiff per le directory.



4

Unison è uno strumento di sincronizzazione rapida dei file che utilizza l'algoritmo rsync e consente di visualizzare in anteprima le differenze prima dell'aggiornamento tra 2 posizioni, siano esse remote o locali.


4

Ho saputo dell'hashdeep due settimane fa. E ha alcuni forti vantaggi:

  • Al contrario meld, funziona bene per cartelle molto grandi. Laddove melddiventa estremamente lento e l'interfaccia utente non risponde (bloccata), l'hashdeep funziona a velocità costante
  • Al contrario rsync, hashdeep rileva i file spostati, ovvero file con lo stesso contenuto, in una directory diversa.

L'output dettagliato è simile a:

...
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 buon modo per fare questo confronto è usare " find " con " md5sum ", quindi un " diff ".

Esempio:

Usa trova per elencare tutti i file nella directory, quindi calcola l'hash md5 per ogni file e esegui il pipe in un file:

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

Esegui la stessa procedura in un'altra directory:

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

Quindi confrontare il risultato due file con "diff":

$diff dir1.txt dir2.txt

Questa strategia è molto utile quando le due directory da confrontare non sono nella stessa macchina ed è necessario assicurarsi che i file siano uguali in entrambe le directory.

Un altro buon modo per fare il lavoro è usare git

git diff --no-index dir1/ dir2/

I migliori saluti!


3

Prova anche FreeFileSync . Ha un'interfaccia decente, una velocità di confronto accettabile, un buon filtraggio del risultato del confronto, diversi modi di sincronizzazione. Viene fornito con uno strumento di monitoraggio delle cartelle (RealTimeSync) che può avviare FreeFileSync (in realtà qualsiasi comando o script) quando vengono modificate quella specifica cartella (o cartelle) o i file all'interno. Vale davvero la pena provare.

Maggiori informazioni su di esso qui o qui , dove si ha un PPA , troppo

Dalla loro pagina, le caratteristiche principali:

Confronta i file (per byte o per data) e sincronizzali.

Nessuna limitazione: è possibile sincronizzare un numero arbitrario di file.

Supporto Unicode.

Supporto di rete.

Supporto integrato per nomi di file molto lunghi (più di MAX_PATH = 260 caratteri).

Database di sincronizzazione per la propagazione di file eliminati e rilevamento dei conflitti

Supporto per più coppie di cartelle con configurazione distinta

Supporto completo per collegamenti simbolici Windows / Linux e punti di giunzione Windows.

Interfaccia utente snella e facilmente accessibile: altamente ottimizzata per la velocità e enormi set di dati.

Algoritmi codificati completamente in C ++.

Tutti gli indicatori di progresso ottimizzati per le massime prestazioni!

Crea processi batch per la sincronizzazione automatica con o senza GUI.

Concentrarsi sull'usabilità:

Solo funzionalità necessarie sull'interfaccia utente: nessun menu sovraccarico o icona giungla.

Seleziona tutte le cartelle trascinandole.

L'ultima configurazione utilizzata e le impostazioni dello schermo vengono salvate automaticamente.

Mantenere e caricare diverse configurazioni trascinandole, pulsante di caricamento o riga di comando.

Fare doppio clic per avviare l'applicazione esterna (ad es. Mostra file in Esplora risorse)

Copia e incolla tutti i dati della griglia come testo

Elimina i file superflui / temporanei direttamente sulla griglia principale.

Menu contestuale del tasto destro.

Informazioni complete sullo stato e segnalazione degli errori

Ordina gli elenchi di file per nome, dimensione o data.

Supporto per file di dimensioni superiori a 4 GB.

Opzione per spostare i file nel Cestino invece di eliminarli / sovrascriverli.

Ignora le directory "\ RECYCLER" e "\ System Volume Information" con il filtro predefinito. (Solo Windows)

Le versioni localizzate sono disponibili per molte lingue.

Elimina prima della copia: evita carenze di spazio su disco per lavori di sincronizzazione di grandi dimensioni.

Filtra le funzionalità per includere / escludere i file dalla sincronizzazione (senza richiedere un nuovo confronto!).

Includi / escludi temporaneamente determinati file dalla sincronizzazione.

Gestisci automaticamente le modifiche dell'ora legale sui volumi FAT / FAT32.

Disponibile versione portatile (selezionabile tramite programma di installazione).

Versione nativa a 64 bit.

Controlla automaticamente gli aggiornamenti da FreeFileSync.

Copia i file bloccati utilizzando il servizio Copia Shadow del volume di Windows. (Solo Windows)

Crea backup regolari con macro% time%,% date% all'interno dei nomi di directory

Copia i tempi di creazione / accesso / modifica di file e cartelle durante la sincronizzazione

Strategia di blocco avanzata per consentire più processi di sincronizzazione (ad es. Più writer, stessa condivisione di rete)

Aggiungo che può gestire i file eliminati, spostandoli nel Cestino o in una cartella specificata dall'utente. Per indicare uno svantaggio: la documentazione del programma si concentra un po 'su Windows, meno su Linux. Ma funziona bene.


3

Puoi usare diffuso:

sudo apt-get install diffuse
diffuse file1 file2

2
Uso spesso Diffuse per una funzione killer: la possibilità di impostare manualmente le ancore di unione. Non fa directory (ancora), ma per differenze individuali e disordinate, la funzione di ancoraggio è fantastica.
Sk606

2

Puoi provare la fusione .

Sono i repository e forniscono una GUI per il confronto di file o cartelle.


1
Meld è una GUI per diff, tra l'altro.
Marco Ceppi

1

Eclipse IDE è un po 'pesante se stai solo facendo dei confronti, ma fa un buon lavoro, tra le altre cose. È possibile selezionare 2 progetti, percorsi o file e confrontarli tra loro, nonché sincronizzarli con i server di controllo del codice sorgente.


1

IMHO FreeFileSync è molto buono e più utile di Meld. È veloce e stabile, può eseguire sincronizzazioni costomizable e può anche esportare il risultato del confronto in un file CSV.

Link Lanchpad


0

Le funzionalità multipiattaforma, facili, senza complicazioni e per il salvataggio dei profili rendono Jfilesync la mia migliore scelta


0

Per confrontare i file

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Puoi usare il comando cmp:

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

l'uscita sarebbe

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

Per confrontare i dir (il tuo bisogno):

puoi usare il comando diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.