Использование diff для поиска одинаковых частей многих файлов?(биззаро-разница, или обратная разница)
Вопрос
Биззаро-Разница!!!
Есть ли способ сделать bizzaro / inverse-diff, который отображает только те части группы файлов, которые являются одинаковыми?(То естьнамного больше , чем три файла)
Странный вопрос, я знаю ... но я конвертирую чьи-то древние статические страницы во что-то немного более управляемый.
Решение
Вам нужен детектор клонов.Он обнаруживает похожие фрагменты кода во всех больших системах с исходными кодами.Смотрите наш инструмент CloneDR: http://www.semdesigns.com/Products/Clone/index.html
Другие советы
Вы могли бы попробовать связь команда (для Обычный).Он будет сравнивать только 2 файла одновременно, но вы должны быть в состоянии выполнить более 3 с помощью некоторых умных сценариев.
Вы могли бы попробовать сим - карта.Прошло несколько лет с тех пор, как я им пользовался, но я помню, что он был очень полезен при поиске сходств внутри файла или во многих разных файлах.
Это такой классическая проблема.
Если бы мне пришлось быстро переделывать его, я бы, вероятно, сделал что-то вроде diff -U 1000000 (предполагая версию diff, которая его поддерживает), передал через sed, чтобы просто объединить строки (и убрать начальные пробелы).Однако вам пришлось бы перебрать все файлы в цикле.
Редактировать:Я забыл, что есть еще Внедрение Tcl это было бы немного более универсальным, но потребовало бы большего количества кодирования.Возможно, вам удастся найти реализацию для выбранного вами языка.