Инструмент сравнения файлов и каталогов?

142

Я ищу что-то, что будет сравнивать каталоги и файлы, такие как Beyond Compare для windows.

В основном для использования источника управления, но мне также нужно использовать его для развертывания.

    
задан DevelopingChris 10.11.2010 в 13:15
источник

19 ответов

169

Meld

Meld - это инструмент, который может сравнивать и объединять файлы и каталоги. Это аналоговый графический интерфейс стандарта diff иpatch командалинейныхинструментов.(См. man diff и man patch для более подробной информации об этом)

Крометого,множествосистемуправленияверсиями(например,bzr или git ) имеют возможность создавать различия между версиями.

    
ответ дан dv3500ea 10.11.2010 в 13:28
источник
42

Diff - ваш друг.

diff -ur path1 path2

Это будет сравнивать все файлы, которые являются общими между path1 и path2.

Если вы измените -ur на -urN , тогда будет отображаться содержимое файлов, которые присутствуют только на одном из путей.

    
ответ дан Richm 04.10.2011 в 19:43
21

'Beyond Compare' также доступен для Linux.

Проверьте их URL-адрес загрузки: Ссылка

    
ответ дан aneeshep 10.11.2010 в 13:23
13

Используйте команду diff :

diff -u file1 file2

diff -u выбирает формат с несколькими строками контекста. В простом diff file1 file2 перечислены только разные строки. Есть еще много опций для управления выходным форматом, игнорирование различий в пробелах и т. Д.

Если вы хотите записать вывод в файл, перенаправьте его:

diff -u file1 file2 >file1-file2.diff
    
ответ дан Gilles 07.10.2013 в 22:05
12

Командир Gnome

Интерфейсможетбытьнеоченьсексуальным,нооноченьмощный!

И если вы привыкли к другому * Commander (например, Norton или тому подобное), вы не будете потеряны.

    
ответ дан Huygens 10.11.2010 в 14:09
10

Инструменты командной строки

Вдохновленный этой записи в блоге .

дифф

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

diff -qr folder1 folder2

Листинг также содержимого:

diff -Naur folder1 folder2

Rsync

Если два каталога не находятся на одной машине, то rsync может быть самым простым решением. Обычно rsync используется для синхронизации каталогов, но вы можете запускать его в подробном и сухом режиме, поэтому он будет только перечислять файлы, которые он должен будет изменить.

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

Вы можете ommit c , если вы хотите сравнить файлы на основе временных меток и размеров файлов, чтобы ускорить все:

rsync -rvn --delete folder1 server:/path/to/folder2
    
ответ дан lumbric 25.12.2011 в 20:22
9

Krusader

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

Чтобы сравнить содержимое файла, вы просто отмечаете два файла, выберите «файл» > «сравнить контент», и они сравниваются по буквам. инструмент сравнения по умолчанию, используемый krusader, является инструментом KDE по умолчанию « Kompare ». Вы можете настроить krusader на использование любого другого инструмента сравнения - например, одного из вышеперечисленных.

Это самое полное решение, которое я когда-либо нашел, и это очень удобно. И он поддерживает все функции keybindungs, используемые командиром полуночи (синтаксис командующего norton).     

ответ дан piedro 10.11.2010 в 19:39
9

KDiff3

Это графический интерфейс для пользователей KDE (или если вы не против использования приложений Qt).

Существуеттакже dirdiff для каталогов.

    
ответ дан tinhed 10.11.2010 в 13:59
6

Возможно, Meld - это то, что вы ищете. Или здесь - некоторые другие альтернативы.

    
ответ дан sagarchalise 10.11.2010 в 13:23
4

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

    
ответ дан Rog 18.01.2011 в 03:29
4

Я узнал о hashdeep две недели назад. И это имеет некоторые сильные преимущества:

  • В отличие от meld , он отлично работает для очень больших папок. Где meld становится чрезвычайно медленным, и пользовательский интерфейс не отвечает (заблокирован), hashdeep работает только с постоянной скоростью
  • В отличие от rsync , hashdeep обнаруживает перемещенные файлы - файлы с тем же содержимым, только в другом каталоге.

Подробный вывод выглядит следующим образом:

...
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
    
ответ дан geekQ 07.05.2013 в 13:50
3

Попробуйте также FreeFileSync . Он имеет достойный интерфейс, приемлемую скорость сравнения, хорошую фильтрацию результата сравнения, различные способы синхронизации. Он поставляется с инструментом мониторинга папки (RealTimeSync), который может запускать FreeFileSync (фактически любую команду или скрипт), когда эта конкретная папка (или папки) или файлы внутри изменены. Действительно стоит попробовать.

Подробнее об этом здесь или здесь , где у вас есть PPA , также

На своей странице основные функции:

Compare files (bytewise or by date) and synchronize them.

No limitations: An arbitrary number of files can be synchronized.

Unicode support.

Network support.

Built-in support for very long filenames (more than MAX_PATH = 260 characters).

Synchronization database for propagation of deleted files and conflict detection

Support for multiple folder pairs with distinct configuration

Full support for Windows/Linux Symbolic Links and Windows Junction Points.

Lean & easily accessible UI: Highly optimized for speed and huge sets of data.

Algorithms coded in C++ completely.

All progress indicators optimized for maximum performance!

Create Batch Jobs for automated synchronization with or without GUI.

Focus on usability:

Only necessary functionality on UI: no overloaded menus or icon jungle.

Select all folders via drag & drop.

Last used configuration and screen settings are saved automatically.

Maintain and load different configurations by drag & drop, load-button or commandline.

Double-click to start external application (e.g. show file in Windows Explorer)

Copy & paste all grid data as text

Delete superfluous/temporary files directly on main grid.

Right-click context menu.

Comprehensive status information and error reporting

Sort file-lists by name, size or date.

    
  
     

Поддержка файлов размером более 4 ГБ.

     

Возможность перемещения файлов в Корзину вместо их удаления / перезаписи.

     

Игнорировать каталоги «\ RECYCLER» и «\ System Volume Information» с фильтром по умолчанию. (Только для Windows)

     

Локализованные версии доступны для многих языков.

     

Удалить перед копией: Избегайте нехватки дискового пространства для больших синхронизаций.

     

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

     

Временно включать / исключать определенные файлы из синхронизации.

     

Автоматическое управление изменениями летнего времени на томах FAT / FAT32.

     

Доступна переносимая версия (выбирается через установщик).

     

Собственная 64-битная версия.

     

Проверяйте обновления из FreeFileSync автоматически.

     

Скопируйте заблокированные файлы с помощью службы теневого копирования томов Windows. (Только для Windows)

     

Создайте регулярные резервные копии с макросами% time%,% date% в именах каталогов

     

Скопировать файлы и папки при создании / доступе / изменении при синхронизации

     

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

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

    
ответ дан luri 18.01.2011 в 02:18
3

Вы можете использовать diffuse:

sudo apt-get install diffuse
diffuse file1 file2
    
ответ дан metdos 18.12.2012 в 09:50
3

Хороший способ сделать это сравнение - использовать « find » с « md5sum », затем « diff ». p>

Пример:

Используйте find, чтобы перечислить все файлы в каталоге, а затем вычислить хеш 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/

С уважением!

    
ответ дан Adail Junior 09.01.2017 в 21:09
2

Вы можете попробовать meld .

Это репозитории и предоставляет графический интерфейс для сравнения файлов или папок.

    
ответ дан Pavlos G. 04.10.2011 в 18:58
1

Eclipse IDE является немного тяжеловесным, если вы просто делаете сравнения, но он хорошо справляется с этим, среди прочего. Вы можете выбрать 2 проекта, пути или файлы и сравнить их друг с другом, а также синхронизировать с серверами управления версиями.

    
ответ дан Rog 18.01.2011 в 03:25
1

IMHO FreeFileSync очень хорош и полезен, чем Meld. Он быстрый и стабильный, может выполнять себестоимость синхронизации и может также экспортировать результат сравнения в файл csv.

Ссылка Lanchpad

    
ответ дан Reza 20.01.2014 в 13:53
0

Кросс-платформенный, простой, без суеты и amp; профильные функции сохранения делают Jfilesync мой лучший выбор

    
ответ дан nightcrawler 23.07.2014 в 21:51
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  

Для сравнения dirs (ваша потребность):

вы можете использовать команду diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
    
ответ дан Maythux 17.06.2015 в 13:05