Имеются два больших каталога с файлами, распределёнными внутри по разным папкам. Нужно чем-то сравнить эти два каталога так, чтобы программа ясно показала отличия. Все продукты, которые я перепробовал, либо больше ориентированы на программистов (различия в синтаксисе файлов, разные строки кода и т.д.), либо, если файл есть и там и там, но пути у них разные, то программа это уже считает за отличия. Мне ненадо ни различий в строках никакого кода, ни чего-то другого подобно навороченного. Мне просто нужно, чтобы программа сказала: в папке слева есть такие-то файлы, в папке справа таких файлов нет. А может быть, например, так, что в папке слева такой же файл тоже есть, но лежит не потому пути, по какому в папке справа. Это не значит, что такого файла у меня нет, это значит, что он есть, просто уже правильно перемещён. Есть ли софт, который может в наглядной форме отследить и это?
Поскольку не все желающие ответить понимают, что мне конкретно нужно, попробую описать далее последовательность действий, которую должна выполнить программа: есть два каталога с софтом: на диске L и на диске D. Каталог на L когда-то был копией каталога на D, но за год в нём были произведены изменения: добавлены новые программы, созданы новые категории и изменено расположение некоторых старых. Есть вероятность, что за год работы на Windows 10 десяткин антивирус мог поработать и постирать с L некоторые файлы, которые, естественно, на D сохранились. От программы требуется:
1. Проанализировать весь каталог с софтом на диске (l:);
2. Проанализировать такой же на диске (d:);
Далее либо
3. Показать мне конкретно, какие файлы есть на d, но нет на l;
либо
4. Удалить с d все те, которые есть на l и оставить только уникальные.
Повторюсь, что на l: некоторые файлы за год работы изменили своё расположение, поэтому на d: они тоже могут быть, но по старым путям. Большинство софта не подходит именно потому, что он анализирует пути и, если они не совпадают, программа считает это уже за отличие и мне показывает, а мне нужны только уникальные файлы, которых в каталоге на l 100% нигде нет.
Если хочется сравнивать файлы при несовпадении имён, то это можно делать по контрольным суммам (MD5, например). Для одинаковых файлов они будут одинаковы.
shurshur, и чем же сравнение по контрольным суммам (если они заранее не известны) лучше сравнения по содержимому? (Это какой-то распространённый бездумный предрассудок!) Оно хуже, так как для вычисления контрольной суммы всё равно требуется обработать файл целиком, да ещё выполнить какие-то вычисления; а несовпадение может быть уже в начальных байтах и полного сравнения файлов и не потребуется.
wisgest, тем, что сравнение по контрольным суммам требует прочитать стопицот файлов по одному разу, а по содержимому может потребоваться не один раз.
Совпадение в начальных байтах для файлов одинаковой структуры может быть весьма частым.
Но вообще очень сильно зависит от количества и характера файлов. Мы же не знаем, что там у автора. Может, у него по 100 файлов надо сравнить, а не 100 миллионов. И вообще, можно же сравнивать файлы по содержимому только с одинаковым размером. Если, конечно, там не нужно искать частичное соответствие, что также может требоваться (судя по упоминанию сравнения построчно).
Что ж, всем спасибо, кто пытался помочь мне найти решение этой непростой, как оказалось, задачи. я нашёл его в итоге сам, и сейчас опишу, в чём оно состоит. Как я сказал ранее, ещё в вопросе, оперировать нужно было с двумя огромнейшими собственными накоплениями программного обеспечения, которые в большинстве своём идентичны. Так вот, нашлась в этом накоплении такая Программа. Как оказалось в дальнейшем, сейчас это уже "Duplicate Files Search & Link" версии 8, тогда как у меня это ещё "Duplicate Same Files Searcher 2.0.1.21125". В прочем, думаю, что новая версия не должна потерять нужный нам функционал. Итак, я поставил Duplicate Same Files Searcher, открыл программу, нажал "Начать поиск" и указал ей оба каталога с софтом - на (L:) и на (D:). Прождал полдня, пока завершилось сканирование (программа нашла дубликаты в папке на L, в папке на D и, естественно, файлы, совпадающие и на L, и на D), затем вызвал на каком-то файле в таблице с результатами контекстное меню и выбрал "Отметить файлы по фильтру". Фильтр может быть таким: "Имя файла содержит...", "Путь к файлу содержит..." и "Реальный путь к файлу содержит...". Можно отметить все сразу, но я отметил только второй. Далее указал, что путь к файлу должен содержать "d:\" и дал программе команду "Отфильтровать". После завершения процесса отметки файлов просто нажал в контекстном меню "Удалить" и смело удалил разом 300773 файла. В итоге, что и требовалось, на диске (D:) остались только уникальные файлы, дубликатов которых на (L:) - нет.
Огромное спасибо Юрию Маличу за эту замечательную программу.
Игорь, Новосибирск.
Да, спасибо, но он это проделывает только в пределах текущего окна. Если я захожу в какую-либо папку, команду приходится выполнять снова: а папок таких у меня видимо-невидимо!.. Замучаюсь я, это мягко сказано...
Отличный совет, подходит, если хотите сравнить содержимое папок с музыкой на компьютере и на флешке для автомобиля, также сразу выделяются все новые файлы, что удобно для копирования.
Если вам не нужно сравнивать содержимое файлов (т.е. файлы с одним именем точно одинаковые в обеих папках), то подойдёт FAR: https://www.farmanager.com/
Достаточно выделить папки в левой/правой панелях.
Хотя не исключаю, что он и содержимое сравнивать умеет, подзапамятовал уже.
Содержимое сравнивает, но не удобно то, что если найдено различие в подкаталогах, то неизвестно, в каких именно файлах, — надо будет открывать эти подкаталоги и сравнивать их по новому…
Блин, ответ в стиле "Чувак, иди погугли, я тебе даже ссылку дам" - самый шикарный ответ из тех, которые я когда-либо видал! Ну сериозно: я задал конкретный вопрос и написал, что многое уже перепробовал, но потому-то вот и потому-то оно не подошло. Зачем такой ответ-то?...
MIDNSK, Затем что их миллион, и какая у вас задача описано... так себе. Я бы вообще свой скрипт написал, но вы ищете готовое решение, так что ссылка в гугль - норм. Во всяком случае можно было бы привести примерно подходящие решения и сказать чем они вам не подходят.