![]() |
Поиск дубликатов
Привет, всем.
Вот упрощённый вид задачи: в списке из ~10 000 строк (6,7-значные числа) найти повторяющиеся значения - дубликаты. Решаема ли такая задача силами CMD\BAT, VBS скриптов или это уже из сферы БД, Excel-я? |
Baranius, попробуйте вот это.
Код:
@Echo Off Впрочем, для вашей задачи (поиск дубликатов песен по их длительности) это особой роли не играет, вероятность совпадения из-за такого поведения Find крайне ничтожна. |
Цитата:
|
Цитата:
|
Уважаемый Anonymоus, я рад Вас видеть в этой теме, которая навеяна нашим неравноправным общением по вопросу... "как не потерять старый плейлист после наведения порядка на диске" И чтобы не настаивать на
мне подумалось, что легче, для начала, избавиться от дубликатов, а потом уж приводить в порядок старый плейлист. Поэтому и появилась эта тема (я постеснялся вновь обращаться к Вам, к тому же правила форума - "один вопрос - одна тема") |
Спасибо, Anonymоus! Всё чудесно работает (взял только один столбец с длительностью и представил его как "test.txt"). Но вот с этим:
Цитата:
|
Просто положите файл рядом со скриптом, и там, где указано "Set File=test.txt" - поставьте своё имя файла. Это и есть относительный путь, в отличии от абсолютного, когда путь полный, и начинается с указания диска.
|
Я имел в виду другое, как теперь с помощью Вашего скрипта обнаружить дубликаты в моём списке состоящим из трёх столбцов-полей
"1|путь к файлу|длительность" ? Ведь Ваш скрипт я проверял на списке , состоящем только из одного столбца - "длительность" |
Попробую ещё раз обратиться.
Ув. Anonymоus не сможете ли Вы подправить свой скрипт из 2 поста под список "test.txt" не с одним полем - "длительность", а с тремя полями вида: "1|путь к файлу|длительность", чтобы я смог в результате увидеть дубликаты уже с их путями. Благодарю. |
Код:
@Echo Off |
Anonymоus! Безупречно.
Не только я, все пользователи AIMPa, будут благодарны Вам. Это ж сколько дискового пространства у каждого освободится! А в мировом масштабе? (скрипт использует уникальные свойства плейлиста AIMPa, для поиска дубликатов. Интересно - стучитесь). Последние вопросы: - нет ли ограничений на количество строк в файле "test.txt", ну, или его веса? - нельзя ли вместо черного окна cmd.exe увидеть уставшее, но доброе лицо Anonymоusа, и вместо привычного текста "Нажмите.." прочитать "Налейте...", да, и ещё - мы все можем пользоваться Вашим скриптом? (можно подумать, что это кого-то остановит. И всё же) Спасибо! |
Цитата:
|
Вложений: 3
Anonymоus, может Вам будут интересны результаты тестирования.
Собрал на старой машине (Barton 1,8 Мгц, память - 1Гб) ~15 000 файлов (70Гб весом). Из плейлиста подготовил "test.txt " - запустил Ваш скрипт поиска дублей. Комп загрузился на 100%, (процессы.jpg) и работал он ... 1час 40 минут. Стресс-тест, как говорится, но результат выдал. И вот первый вывод: кол-во песен с равной до миллисекунды длительностью (судя по весу файла "! duplicated (1ч 40м) весь - 15 000.txt") почти равно половине всех песен (вторая строчка на скриншоте _кол-во дублей.jpg ). Не поверил, взял первую 1 000 строк из "test.txt ", потом первые 3 000, следом ещё 3 000 строк из середины файла (там, где длина песен "L=226s" самая распространённая) - результат тот же и неутешительный для меня - слишком много совпадений и искать именно дубли одинаковых песен среди такого кол-ва совпадений будет некомфортно. Так и вышло. Вот скрин (_dup-203сек.jpg) совпадений песен в диапазоне только одной секунды 203000 - 203999мс (3:23). Из 53 штук только 2 пары дублей (желтенькие). Выводы - одного поля для сравнения, а тем более, поиска дубликатов мало (нужно чем-то подпирать, хоть тем же размером); - время обработки растёт не пропорционально кол-ву обрабатываемых строк, очевидно Find не отбрасывает из рассмотрения 1 строку, после того, как переходит ко второй и т.д.; - нашлись и неточности, присущие Find, о которых Вы говорили ранее - несколько сотен почему-то именно коротких файлов (L- 5тизначное) с цифрами в пути. А про тесты синхронизации старого ПЛ с упорядочненными файлами на диске (умный поиск-сравнение в списках) отпишусь в родной теме. Ещё раз, спасибо за поддержку и понимание. |
Да, результаты интересные. Выходит, сочетание идентификации по длительности, плюс ошибки самого алгоритма поиска явно не дают требуемой точности. Сравнение одновременно с длительностью ещё и по размеру - это не совсем адекватная задача для чистого cmd, без применения внешних утилит, не тот инструмент.
Цитата:
Увы, по итогам выходит, что практического применения данный скрипт не имеет. |
Цитата:
Спасибо! |
Время: 08:59. |
Время: 08:59.
© OSzone.net 2001-