Есть ли способ найти похожие файлы (не дубликаты)?

12

Моя конечная цель - рефакторинг кода, написанного моими коллегами. Итак, есть ли инструмент, который может найти файлы, отличающиеся только несколькими словами?

(Правка: это для Mac, но другим могут понравиться ответы не от Mac.)

салить
источник
@harry, учитывая историю изменений , я думаю, вы опубликовали ответ Windows, который был отклонен, потому что только тогда появилось требование для Mac? Я бы предпочел отказаться от требования Mac и посмотреть ваш ответ (если это был хороший ответ не для Mac)!
Арджан
@ Арджан: Готово.
harrymc
Для Mac я подумал, можно ли использовать Spotlight. Я сомневаюсь в этом, но если вы знаете способ сделать что-то в Spotlight, то mdfindкоманда может помочь написать какой-нибудь скрипт для автоматизации вещей. Тем не менее, я думаю, что он всегда будет использовать только метаданные. Следовательно, поиск похожих файлов может ограничивать тип файла, но не его содержимое. Никакой сигары.
Арьян

Ответы:

5

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

Бенджамин Банье
источник
Не очень помогло - в приложении rails с большим количеством очень похожих партиций он только сказал, что у меня есть похожие строки в development.log
tig
Вы дали ему правильные файлы для анализа? Вы, вероятно, заботитесь о своих источниках, а не development.log. Для рельсов посмотрите на flay rubyforge.org/frs/…
Бенджамин Банье
Да, я передал все файлы в приложение rails app dir
tig
2

(Для Windows)

Продукт Anti-Twin (бесплатный для частного использования) утверждает, что может сделать это:

Если вы хотите, чтобы Anti-Twin выполнял поиск не только полных дубликатов, но и похожих файлов, вы можете уменьшить желаемое минимальное совпадение со значения по умолчанию от 100% до 60%. Эта функция была специально разработана для поиска практически идентичных файлов, в которых была изменена только крошечная деталь. Анти-Твин использует поиск сходства, как только вы введете значение ниже 100%. Сравнение сходства занимает гораздо больше времени, чем поиск 100% полных дубликатов!

К сожалению, поиск сходства как часть побайтового сравнения имеет смысл только для нескольких типов файлов, потому что сходство может быть обнаружено только в том случае, если файлы не сжаты и не зашифрованы. Несжатые файлы - это, например, неформатированные тексты (.TXT) и HTML.

harrymc
источник
Я работаю на Mac и запускаю что-то через wine, параллели или что-то в этом роде, что не сделает процесс рефакторинга проще, а сложнее :)
tig
@tig: Вы должны были указать это в своем посте. Я добавил тег Mac.
harrymc
@Arjan: я восстановил этот ответ, как вы и просили.
harrymc
по праву так! [mac]Снова удалил тег. Должен был быть в [osx]любом случае ;-)
Арджан