2009-07-02 4 views
56

Итак, утилита Diff работает так же, как я хочу для 2-х файлов, но у меня есть проект, который требует сравнения с более чем двумя файлами за раз, может быть, до 10 за раз. Это требует наличия всех этих файлов рядом друг с другом. Мои исследования на самом деле ничего не изменили, vimdiff кажется лучшим до сих пор с возможностью сравнения 4 за раз.Утилита DIFF работает для 2 файлов. Как сравнить более двух файлов за раз?

Мой вопрос: Есть ли какая-нибудь утилита для сравнения более чем 2 файлов за раз, или способ взлома diff/vimdiff, чтобы он мог выполнять несколько сравнений? Файлы, которые я буду сравнивать, относительно короткие, поэтому они не должны быть слишком медленными.

Заранее благодарен!

ответ

88

Отображение 10 файлов бок о бок и выделения различий можно легко сделать с помощью Diffuse. Просто укажите все файлы в командной строке, например так:

диффузный 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt

+1

Ничего себе, это потрясающе! Спасибо за ответ даже поздно, мне все еще нужна помощь. –

+0

Что такое подобное сравнение? – leeand00

+3

Фантастический инструмент; просто помог мне решить неприятную проблему.Я знаю, что это более старый ответ, но спасибо! – SeanKilleen

2

заказ «Beyond Compare»: http://www.scootersoftware.com/

Это позволяет сравнить целые каталоги файлов, и, похоже, он работает на Linux тоже.

+1

дифф -r также сравнивает целые каталоги файлов, но он только когда-либо сравнивает файлы с одной driectory против файлов из другого каталога. – reinierpost

+1

Beyond Compare - великолепный инструмент, и я все время использую его для разрешения конфликтов слияния. Однако это не правильный инструмент для этой работы, так как он может сравнивать только два файла против eachother или против общего предка. – Superole

17

Vim уже можно сделать:

vim -d file1 file2 file3 

Но вы обычно ограничены 4 файлов. Однако вы можете изменить это, изменив одну строку в источнике Vim. Константа DB_COUNT определяет максимальное количество файлов diff, и оно определено в верхней части diff.c в версиях 6.x и более ранних версиях, или примерно на две трети пути вниз structs.h в версиях 7.0 и выше.

+0

vimdiff или vim -d могут делать только 4 файла за раз, по крайней мере, на моем компьютере. кто-нибудь знает, как обойти это? –

+0

Я не заметил упоминания об этом в вопросе. Обновлено, чтобы включить инструкции по изменению лимита Vim. –

+0

Эй, вы знаете, как на самом деле добраться до structs.h или diff.c? Я не могу найти исходный код vim для Win или Linux. –

2

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

+0

да, но если бы я сравнивал, например, 3 файла, я бы хотел, чтобы они все разнялись с каждым из двух других файлов, так как diff которые перестраиваются, чтобы увидеть, где они совпадают. –

+0

Я нашел эту команду, которая может помочь с вашим скриптом, его называется diff3 и, предположительно, его утилитой для сравнения трех файлов. http://linux.about.com/library/cmd/blcmdl1_diff3.htm версия окна можно найти здесь http://gnuwin32.sourceforge.net/packages/diffutils.htm –

 Смежные вопросы

  • Нет связанных вопросов^_^