Бинарный поиск файлов в Windows 8?

Я в странной ситуации. Мне нужно найти файл на основе его содержимого, а не имени, потому что имя не уникально...

Например, у меня есть файл с именем "cat.jpg". Это изображение кота. У меня получилось 5 миллионов копий этого в 5 миллионов разных папок, поэтому, хотя имена папок разные, имена файлов одинаковы:

cat1/cat.jpg
cat2/cat.jpg
cat3/cat.jpg
etc...

Тем не менее, один из этих cat.jpgs на самом деле является изображением собаки (и файл по-прежнему называется "cat.jpg")

Как мне найти собаку, если у меня есть точная копия? Я не могу выполнить поиск по имени файла, потому что тогда я просто получу 5 миллионов результатов "cat.jpg"

3 ответа

Решение

Вот пример использования fc.exe с бинарным флагом сравнения:

for /R "C:\Some Path" %f in (*.jpg) do @(FC /B "C:\Some Other Path Maybe\dog.jpg" "%f" | FIND "FC: no differences encountered.") && echo %f

Это будет рекурсивно просматривать файлы и папки в C:\Some Path назначение JPEG для %f, FC передаст результат сравнения с dog.jpg а также %f в утилиту сравнения строк, FIND,

Если файлы соответствуют выводу из FC будет FC: различий не обнаружено.

&& Значит это echo %f будет срабатывать, если эта строка найдена FIND,

Так что если есть совпадение, вы должны увидеть что-то вроде

FC: no differences encountered.
C:\Some Path\cat5000000\cat.jpg

Хотя это и не бинарный поиск, вы можете использовать powershell, чтобы хотя бы приблизиться (при условии, что все изображения точно такие же, кроме изображения...)

https://stackoverflow.com/questions/9552367/get-the-detail-informations-from-a-png-file-in-powershell

В основном, найдите детали, с которыми вам нужно проверить, и затем используйте Powershell для поиска каждого изображения, а затем сравните:

http://technet.microsoft.com/en-us/library/ee156812.aspx

Вы можете использовать сравнить объект, чтобы проверить объект тоже. В любом случае должен работать, но второй способ будет лучше / проще.

Если у вас есть точная копия, когда вы знаете размер файла, вы можете искать cat.jpg size:n.nnKBили, более конкретно, в байтах: cat.jpg size:nB,

Если у вас есть размер файла и вы не знаете имя, ищите просто size:nB должно работать нормально, или, по крайней мере, значительно сузить его.

Другие вопросы по тегам