Інструмент порівняння файлів і каталогів?


149

Я шукаю те, що буде порівнювати каталоги та файли, як Beyond Compare робить для Windows.

Це головним чином для використання джерела управління, але мені потрібно використовувати його і для розгортання.


Ви хочете лише список файлів або власне вміст кожного файлу?
Мартін Удінг

Я хочу, щоб список файлів і, якщо можливо, різний вміст між файлами з однаковим шляхом.
isoman

2
Було б зручно, якщо інструмент GUI дозволяє приховувати однакові папки та файли . Це дозволило б значно простіше зосередитись на непарних папках і файлах. Хтось знає інструмент, який підтримує цю функцію?
JJD

Погляньте на унісон . Поза межами порівняння підхід "єдиний магазин робить все", в той час як унісон зосереджується на обробці обходу дерев, збереженні стану та розповсюдженні змін, покритті функцій "Більше порівняння" шляхом делегування таких речей, як "розрізнення", "трехстороннє злиття" тощо. улюблена програма, що працює на рівні файлів. Unison - це вільне, дуже надійне та зріле програмне забезпечення, здатне швидко виявляти та синхронізувати величезні дерева за допомогою мережі між різними ОС, тощо. Спочатку читайте документ, особливо в Windows.
Стефан Гурішон

emacs має інструмент порівняння каталогів. Як і всі emacs, очна цукерка - це, "що навіть означає цукерка для очей?", Але вона показує контекстуальну допомогу з клавішами, дозволяє за допомогою декількох натискань клавіш рекурсивного аналізу, приховувати однакові файли або навіть підкаталоги, інтерактивно вибирати файли для показу кольору -кодировані відмінності з різними параметрами, інтерактивно об’єднуючись, розповсюджуючи або виконуючи довільні редагування файлів, легко переходьте до наступного файлу чи редактора, ведучи облік стану, з усіма звичайними засобами редагування.
Стефан Гурішон

Відповіді:


175

Формавстановити мульду

Meld - це інструмент, який може порівнювати та об’єднувати файли та каталоги. Це аналоговий інтерфейс для стандартних diff встановити дифузолиі patch встановити виправленнякомандних лінійних інструментів. (Докладніші відомості див. У розділі man diff та man patch )

введіть тут опис зображення

Крім того, багато систем управління джерелами (наприклад, bzr встановити bzr-gtkабо git встановити git) мають можливість створювати різні версії.


2
Meld дивовижний. Я використовую це як мій елемент управління джерелом.
Метт Столяр

12
Щойно випробував на більшій папці - 4 ГБ, 2000 файлів. Функціональність розплаву є бажаною. Але для цієї папки управління надзвичайно повільним, а інтерфейс користувача не відповідає (блокується). Використовуючи rsync зараз.
geekQ

1
Також чудово працює при порівнянні текстових файлів поруч або навіть копіюванні вставлених матеріалів. Найкращий інтерфейс, який я бачив!
Стефан Рогін

@geekQ як швидка альтернатива, здатна миттєво обробляти велику папку, яку ви хочете, див. beyond compareнижче. перевершує
мельд

Meld збоїв кожного разу, коли я хочу вибрати папку: / У мене в останньому сховищі дистрибутива є
остання

44

Діфф - твій друг.

diff -ur path1 path2

Це дозволить порівняти всі спільні файли між path1 та path2.

Якщо ви перейдете -urдо -urNцього, це також покаже вміст файлів, які присутні лише в одному з шляхів.


1
Встановлено colordiffта використаноcolordiff -ur path1 path2
warvariuc

Не працює в cygwin.
Томаш Зато

22

"Більше порівняння" доступний і для Linux.

Перевірте їх URL-адресу завантаження: http://www.scootersoftware.com/download.php


Beyond Compare особливо корисний, коли ви робите ssh (з ключем або паролем) віддаленому хосту і порівнюєте його з локальною копією.
brianlmerritt

13

Використовуйте diffкоманду:

diff -u file1 file2

diff -uвибирає формат з кількома рядками контексту. Простий diff file1 file2список містить лише різні лінії. Існує ще багато варіантів керування вихідним форматом, ігнорування відмінностей лише пробілів тощо.

Якщо ви хочете записати вихід у файл, перенаправіть його:

diff -u file1 file2 >file1-file2.diff

12

Gnome Commanderвстановити Gnome Commander

Інтерфейс може бути не справжній сексуальний, але він надзвичайно потужний!

alt текст

І якщо ви звикли до іншого * Commander (наприклад, Нортон або подібні), ви не загубитеся.


1
Я не використовував його для порівняння 2-х файлів, але я використовував його, щоб сказати мені, які файли відрізнялися при порівнянні з каталогами. Це особливо корисно при сортуванні фотографій ;-)
Гюйгенс

10

Інструменти командного рядка

Натхненний цим записом у блозі .

розл

Список різних файлів:

diff -qr folder1 folder2

Перелік також вмісту:

diff -Naur folder1 folder2

rsync

Якщо два каталоги не на одній машині, це rsyncможе бути найпростішим рішенням. Зазвичай rsyncвикористовується для синхронізації каталогів, але ви можете запускати їх у багатослівному та сухому режимі, тому він буде лише перелічувати файли, які потрібно було б змінити.

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

Ви можете опустити, cякщо хочете порівнювати файли на основі часових позначок та розмірів файлів, щоб пришвидшити все:

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

9

Крузадервстановити krusader

Krusader - це безкоштовний інструмент (доступний у Центрі програмного забезпечення), який показує вміст папок у порівнянні, і ви можете синхронізувати з великою кількістю різних опцій. Ви можете фільтрувати під час синхронізації та порівняння.

Крузадер

Щоб порівняти вміст файлу, ви просто позначте два файли, виберіть "файл"> "порівняти вміст", і вони порівнюються на письмі за літерою. інструментом порівняння за замовчуванням, використовуваним krusader, є інструмент KDE за замовчуванням " Kompare ". Ви можете встановити krusader, щоб використовувати будь-який інший інструмент порівняння - як, наприклад, один із перерахованих вище.

Це найповніше рішення, яке я коли-небудь знаходив, і це дуже зручно. І він підтримує всі функціональні клавішні, використовувані командиром опівночі (синтаксис командира Нортона).


Ви також можете скористатися "Інструменти -> Синхронізувати каталоги", щоб отримати перегляд рекурсивних змін файлів двох панелей каталогів.
Анжелос Пікулас

на жаль синхронізатор у krusader не підтримується: bugs.kde.org/show_bug.cgi?id=270150#c7 . Чи існує альтернатива, яку активно підтримують?
rubo77

1
@ rubo77: ця помилка тим часом виправлена.
mivk

9

KDiff3 встановити kdiff3

Це графічний фронт, який відрізняється для користувачів KDE (або якщо ви не проти використовувати додатки Qt).

kdiff3

Існує також dirdiff встановити dirdiff для каталогів.



4

Unison - це швидкий інструмент синхронізації файлів, який використовує алгоритм rsync і дозволяє переглядати відмінності перед оновленням між двома місцями, будь то віддалені або локальні.


4

Я дізнався про hashdeep два тижні тому. І це має деякі сильні переваги:

  • На відміну від meld, він добре працює для дуже великих папок. Там, де meldстає надзвичайно повільно, а інтерфейс користувача не реагує (заблокований), хеш-глиб просто працює з постійною швидкістю
  • На відміну від rsynchashdeep виявляє переміщені файли - файли з однаковим вмістом, просто в іншому каталозі.

Докладний вихід такий:

...
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

Хороший спосіб зробити це порівняння - використовувати " find " з " md5sum ", потім " diff ".

Приклад:

Використовуйте пошук, щоб перелічити всі файли в каталозі, потім обчисліть хеш md5 для кожного файлу та передайте його у файл:

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

Зробіть ту ж процедуру в іншому каталозі:

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

Потім порівняйте результат два файли з "diff":

$diff dir1.txt dir2.txt

Ця стратегія дуже корисна, коли два каталоги, які потрібно порівнювати, не знаходяться в одній машині, і вам потрібно переконатися, що файли в обох каталогах рівні.

Ще один хороший спосіб виконати роботу - це використання git

git diff --no-index dir1/ dir2/

З найкращими побажаннями!


3

Спробуйте також FreeFileSync . Він має пристойний інтерфейс, прийнятну швидкість порівняння, хорошу фільтрацію результату порівняння, різні способи синхронізації. Він поставляється з інструментом моніторингу папок (RealTimeSync), який може запустити FreeFileSync (фактично будь-яку команду чи скрипт), коли ця конкретна папка (або папки) або файли в них змінені. Дійсно варто спробувати.

Більш детальна інформація про це тут або тут , де у вас є PPA , занадто

На їхній сторінці основні характеристики:

Порівняйте файли (в байці або за датою) та синхронізуйте їх.

Без обмежень: Довільну кількість файлів можна синхронізувати.

Підтримка Unicode.

Підтримка мережі.

Вбудована підтримка дуже довгих імен файлів (більше MAX_PATH = 260 символів).

База даних синхронізації для розповсюдження видалених файлів та виявлення конфліктів

Підтримка декількох папок з різною конфігурацією

Повна підтримка символічних посилань Windows / Linux та сполучних точок Windows.

Легкий та легко доступний інтерфейс користувача: Високо оптимізований для швидкості та величезних наборів даних.

Алгоритми закодовані в C ++ повністю.

Всі показники прогресу оптимізовані для максимальної продуктивності!

Створюйте пакетні завдання для автоматизованої синхронізації з графічним інтерфейсом або без нього.

Зосередьтеся на зручності використання:

Тільки необхідна функціональність у користувальницькому інтерфейсі: відсутність перевантажених меню чи значків джунглів.

Виберіть усі папки за допомогою перетягування.

Останні використані налаштування та параметри екрана зберігаються автоматично.

Підтримуйте та завантажуйте різні конфігурації за допомогою перетягування, кнопки завантаження або командного рядка.

Двічі клацніть, щоб запустити зовнішню програму (наприклад, показати файл у Windows Explorer)

Скопіюйте та вставте всі дані сітки у вигляді тексту

Видаліть зайві / тимчасові файли безпосередньо з основної сітки.

Клацніть правою кнопкою миші контекстне меню.

Вичерпна інформація про стан та повідомлення про помилки

Сортування списків файлів за іменем, розміром або датою.

Підтримка розмірів файлів більше 4 Гб.

Можливість переміщення файлів у кошик замість видалення / перезапису.

Ігноруйте каталоги "\ RECYCLER" та "\ Інформація про обсяг системи" за допомогою фільтра за замовчуванням. (Лише для Windows)

Локалізовані версії доступні для багатьох мов.

Видалити перед копіюванням: Уникайте нестачі місця на диску для великих завдань синхронізації.

Функціональність фільтру, щоб включати / виключати файли з синхронізації (не вимагаючи повторного порівняння!).

Тимчасово включайте / виключайте певні файли з синхронізації.

Автоматично обробляти зміни літнього часу на обсягах FAT / FAT32.

Доступна портативна версія (вибирається через інсталятор).

Рідна 64-розрядна версія.

Автоматично перевіряйте наявність оновлень з FreeFileSync.

Копіюйте заблоковані файли за допомогою служби Windows Volume Shadow Copy. (Лише для Windows)

Створіть регулярні резервні копії з макросами% time%,% date% у іменах каталогу

Скопіюйте час створення файлів і папок / доступу / модифікацій під час синхронізації

Розширена стратегія блокування для забезпечення безлічі процесів синхронізації (наприклад, кілька записувачів, однакова мережа)

Я додаю, що він може керувати видаленими файлами, переміщуючи їх у кошик або папку, вказану користувачем. Щоб відзначити недолік: програмна документація зосереджена на Windows, менше на Linux. Але це робить свою роботу чудово.


3

Ви можете використовувати дифузне:

sudo apt-get install diffuse
diffuse file1 file2

2
Я часто використовую Diffuse для однієї вбивчої функції - можливості вручну встановлювати з’єднання якорів. Він не робить каталогів (поки), але для окремих та безладних відмінностей особливість прив’язки є приголомшливою.
Sk606

2

Можна спробувати meld .

Це сховища та надає графічний інтерфейс для порівняння файлів чи папок.


1
Meld - це графічний інтерфейс для різниці, btw.
Марко Чеппі

1

Eclipse IDE трохи важкий, якщо ви просто робите порівняння, але це, серед іншого, добре справляється з цим. Ви можете вибрати 2 проекти, контури або файли та порівняти їх між собою, а також синхронізувати з серверами управління джерелами.


1

IMHO FreeFileSync дуже хороший і корисніший за Meld. Це швидко і стабільно, може робити дорожні синхронізації, а також може експортувати результат порівняння у файл CSV.

Ланчпад посилання



0

Для порівняння файлів

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Ви можете використовувати команду cmp:

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

вихід буде

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

Для порівняння панів (вам потрібно):

ви можете використовувати команду diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.