1 (2022-10-30 10:15:53 отредактировано BoDun)

Duplicates Finder
Простая программа для поиска дубликатов файлов как для linux, так и для windows

https://itmages.su/images/2022/10/11/563e395828ab2eb4a2b5973ccd95f9c1.th.png

Ищет по совпадению хешей
Так же есть возможность искать без учёта хешей, а просто поиск файлов
Есть возможность сохранить результат в txt или csv файл
Можно удалить отмеченные файлы или же перенести их в выбранный каталог

Duplicates Finder 1.6.8 доступно на гитхабе
Исправлена проблема при сохранении результата в txt файл (спасибо algri14)

github
gitflic

Отдельная благодарность algri14, за конструктивную критику, предложения и пожелания, а так же за изначальное тестирование

Обычный юзер
Mageia 8 x86_64 Plasma
Спасибо сказали: Vagulo1

2 (2022-10-11 00:17:08 отредактировано algri14)

Поиск-сравнение файлов не работает или работает не так как нужно.
У меня в картинках есть ДВА файла: « Смайлик-олично.gif » и « Смайлик-Отлично.gif », ставил маску со звёздочкой Смайлик* и без звёздочки тоже → в ответ пусто.

Есть недочёты в окне кнопок, окончания слов не вмещаются, может быть потому, что у меня разрешение монитора 1440х900 (16х10)?
в английской локали слова в кнопках полностью вмещаются
нет номера версии в названии программы (в справке есть), скрин прилагаю:
https://itmages.su/images/2022/10/10/e15e8a396781ed648e3dc18246da93a4.th.png

Дополнено:
вообще не ищет, даже по точному названию файла

ДОПОЛНЕНО
пару минут назад вообще не искал, сейчас всё находит, не могу понять в чём дело, потестирую отпишу…

Нашёл баг:
Если поставить неправильную маску, без звёздочки и просканировать, то файл не будет найден, далее программу надо только перезапускать, она встаёт в ступор и не ищет даже по точному названию.

Примечание:
«Регулярные выражения (regexp или regex) — это механизм поиска и замены с помощью шаблонов-символов. Все команды DNF предоставляют возможность поиска и фильтрации результата с помощью добавления одного или нескольких шаблонов выражений в качестве аргумента.
Шаблоны выражений содержат один или несколько символов подстановки — символ « * » расширяет поиск до соответствия любому поднабору знаков, а « ? » до соответствия любому одиночному символу.»

По идее поиск в этой программе должен выполняться точно так же.
Если только по маске " текст со звёздочкой " → " текст* ", то убери из шаблона " *.jpg *.png file.txt " фразу → " file.txt " и вставь маску-пример → " текст* " или " txt* " , что-то одно из двух, в русской локализации наверное слово " текст* " или " название* ".
Вот так:
Пример: *.jpg *.png название*

Поиска дубликатов по точному названию файла не делает, например: есть файл 453903.gif и дубликат 453903A.gif, если вставить в маску, то поиска не будет.

А вообще программа замечательная, "лёгкая" и простая, гораздо лучше чем dupeGuru

Спасибо сказали: BoDun1

3

1.6.1
+ версия программы вернулась в заголовок
+ увеличина ширина некоторый полей, для вмещенния текста интерфейса
- исправлен баг "зависания" если при поиске файла изначально не указывался символ "*"

Linux x86_64
Windows x64

Обычный юзер
Mageia 8 x86_64 Plasma
Спасибо сказали: algri141

4

BoDun⇓ пишет:

1.6.1

Вроде бы всё работает, баги исправлены.
зы: скачивается файл DuplicatesFinder.x86_64 , а надо бы DuplicatesFinder-1.6.1.x86_64,  это в дальнейшем в названии пакета.

5

algri14⇓ пишет:

баги исправлены.

А в поле маски, в примере, звёздочку поставить не-а? или так задумано?  " *.jpg *.png file.txt* "

Дополнено:

Не знаю баг это или не баг.
Есть файл 453903.gif, если в поле поиска поставить 453903* (звёздочка без пробела), то находится именно этот файл 453903.gif и его двойник 453903A.gif
НО, если поставить 453903 * (с пробелом), то выдаст вообще все файлы из папки, независимо есть ли та или иная цифра из запроса 453903
Выдало ВСЕ файла из папки.
Так и должно работать по маске с пробелом? в смысле так работает во всех подобных программах по " маске с пробелом звёздочка " ?

6

algri14⇓ пишет:

file.txt*

Пример в программе указан верный, если по вашей маске, то будут искаться:
file.txt.что-угодно_может.быть(как)продолжение.файла
Если же из примера (file.txt), то будут искаться все file.txt

algri14⇓ пишет:

если поставить 453903 * (с пробелом), то выдаст вообще все файлы

Разделитель пробел, то есть вы указали 2 маски 453903 - точное имя файла и * - вообще все файлы

algri14⇓ пишет:

Выдало ВСЕ файла из папки.
Так и должно работать по маске с пробелом? в смысле так работает во всех подобных программах по " маске с пробелом звёздочка " ?

Не знаю как в других программах, но если разделитель пробел и маской вы запрашиваете и конкретный и файл и все файлы вообще - то так и будет, это и не баг и не фича, это запрос который вы составили

Обычный юзер
Mageia 8 x86_64 Plasma

7

BoDun⇓ пишет:

Не знаю как в других программах,

и я точно не знаю, но работа по маске должна быть по универсальному шаблону, я ведь не зря привёл пример от утилиты DNF
Посмотри хотя бы в вики Регулярные выражения (хотя вики это не лучший пример)

?     Ноль или одно
*     Ноль или более
+     Одно или более

8

BoDun⇓ пишет:

если разделитель пробел и маской вы запрашиваете и конкретный и файл и все файлы вообще - то так и будет, это и не баг и не фича, это запрос который вы составили

если это вообще принцип работы регулярок, то тогда вопрос отпадает.

зы: надо будет почитать на досуге

9 (2022-10-12 10:08:18 отредактировано BoDun)

algri14, в данном случае, программа работает с именами файлов, где строго ограничен набор символов на имя файлов во многих файловых системах
Простой пользователь, не знает что такое регулярки, как их правильно составлять, да и более того, много кто знают регулярки при сложных составлениях тоже делают ошибки при составлении
Полноценные регулярные выражения актуальны когда нужно обработать содержимое файла, когда объём сразу большой, к примеру, когда могут быть и экраны символов и прочее, здесь же, этим только усложнять и запутывать простого пользователя
Так же здесь явно даны простые примеры масок, которые работают корректно и понятно любому пользователю

В конце концов, маска файлов, это маска файлов, как раз именно то, что указано в примере
Регулярки это не маска, поэтому усложнять ими здесь и вводить пользователя в заблуждение не к чему

Дополнено:
Решил провести некий тест, с возможностью использования регулярок
У меня используется объект QDirIterator, который принимает фильтр масок
Однако вариант типа *(+)*.txt он не видит и не работает с ними, только простые маски файлов
Так что здесь не выйдет так использовать, ну или курить бамбук с QRegExp и усложняться им как прослойкой, однако не выдаст в список фильтров маску для поиска, ему нужна строка, чтоб он мог определить совпадает она или нет

Обычный юзер
Mageia 8 x86_64 Plasma

10

BoDun⇓ пишет:

в данном случае, программа работает с именами файлов, где строго ограничен набор символов на имя файлов во многих файловых системах

всё, понял, согласен
это я уже придираться начал big_smile

зы: но регулярки почитаю, пригодится big_smile

11

Закинуто в гитхаб https://github.com/bodun56/duplicatesfinder

Обычный юзер
Mageia 8 x86_64 Plasma

12 (2022-10-12 17:49:09 отредактировано okdal)

Сурово ты в рукопашную интерфейс писал. Мне обычно терпения не  хватает. И Creator  использую. Быстрее получается.
А в sqldatabase можно без временного файла обойтись. Достаточно сделать вот так:  db.setDatabaseName(":memory:");
Вот еще бы увидить какой будет spec-файл для rpm-пакета

Это не должно быть слишком сложно... (с)

13 (2022-10-12 18:02:02 отредактировано BoDun)

okdal⇓ пишет:

Сурово ты в рукопашную интерфейс писал.

Да оно изначально то именно через креатор, объекты то из кода я не создаю, только таблица для вывода

okdal⇓ пишет:

А в sqldatabase можно без временного файла обойтись. Достаточно сделать вот так:  db.setDatabaseName(":memory:");

Теперь буду знать, а то меня запарило биться головой о стену с варнингами, в терминале видно, решить не смог, но на работу отрицательно не влияет

Сразу договоримся, что руки ломать мне пока не будем big_smile
Оставим на попозже, а то ещё правок предвидится немало

okdal⇓ пишет:

Вот еще бы увидить какой будет spec-файл для rpm-пакета

С этим пока только бьюсь, так сказать, на форуме росы вроде помогают с этим вопросом
Но rpm вообще не создавал, уже столкнулся с тем, что и pro файл нужно править, ибо по дефолту он при make install ставит в /opt/
Нашёл костыль, теперь ставит уже куда надо, но ещё вопросы с картинками и desktop файлом, пока эти два момента не получилось подружить
Но если интересно, src.rpm https://disk.yandex.ru/d/vMNwn0EIm1Wovw

Обычный юзер
Mageia 8 x86_64 Plasma

14

BoDun⇓ пишет:

Закинуто в гитхаб

а что не на https://gitflic.ru/ , может надёжнее своё smile , а ещё лучше продублировать, кто его знает что дальше будет.

15 (2022-10-13 15:16:52 отредактировано BoDun)

algri14⇓ пишет:

а что не на https://gitflic.ru/

А потому, что нужно обратиться к администратору сервиса, чтоб репо был открытый, обратился - жду ответа...

okdal⇓ пишет:

Вот еще бы увидить какой будет spec-файл для rpm-пакета

spec для rpm пакета
Удалось собрать, установку проходит, в меню кажет

duplicatesfinder-1.6.4-1.src.rpm
duplicatesfinder-1.6.4-1.x86_64.rpm

upd:
Исходники теперь не только на github, но и на gitflic

Обычный юзер
Mageia 8 x86_64 Plasma

16

BoDun⇓ пишет:

Исходники теперь не только на github, но и на gitflic

А ссылка на gitflic ?
Скачал с github версию duplicatesfinder-1.6.4-1.x86_64.rpm
В первый раз запускается История изменений, так задумано? зачем?
Орабатывает нормально.
- опцию исключений я бы назвал не «ИсключАть», а ИсключИть»
- после запуска и наведении курсора на значок в панели задач, высвечивается 2 подсказки:

Duplicates Finder
Duplicates Finder 1.6.4

- по идее должно быть либо одно название, либо название + каталог поиска,
- либо во второй строке из файла.desktop строка №7 Comment[ru] => Поиск дубликатов файлов
- в строку №6 добавь [en]
Comment[en]=Find duplicates files

В незапущеном состоянии одна строка Duplicates Finder, без подсказки, возможно потому, что при моём разрешении экрана 1440х900, подсказка-коммент слишком длинное и не влазит (просто констатирую, не критично)

17

algri14⇓ пишет:

А ссылка на gitflic ?

В первом сообщении добавлено

algri14⇓ пишет:

В первый раз запускается История изменений, так задумано? зачем?

История изменений показывается 1 раз после обновления.
Многие программы говорят о том, что было изменено и это удобно. А единожды закрыть окошко, если оно не интересно - не сложный процесс.

algri14⇓ пишет:

опцию исключений я бы назвал не «ИсключАть», а ИсключИть»

Думаю, будет иметь смысл внести это изменение

algri14⇓ пишет:

после запуска и наведении курсора на значок в панели задач, высвечивается 2 подсказки:

Глянул, первое берётся из Name desktop файла, второе же берётся из заголовка программы
Добавлю ru секции, проморгал этот момент

algri14⇓ пишет:

в строку №6 добавь [en]
Comment[en]=Find duplicates files

А зачем? Сейчас 2 локализации, ru и en
Если локализация не ru, то секции Name[ru], Comment[ru], GenericName[ru] - будут игнорироваться
Поэтому секции Name, Comment, GenericName - указаны на английском

Обычный юзер
Mageia 8 x86_64 Plasma

18

Обновлено до 1.6.5

Обычный юзер
Mageia 8 x86_64 Plasma

19

BoDun⇓ пишет:

Обновлено до 1.6.5

Угу, теперь в подсказке (панель задач) то, что надо, 2 строки:
Поиск дубликатов файлов
Duplicates Finder 1.6.5
good

20

Обновлено до 1.6.7 github, так же доступно и на gitflic

Добавлен перевод на итальянский язык
Исправлены ошибки в английской локализации

Обычный юзер
Mageia 8 x86_64 Plasma

21

Дошли руки навести порядок в муз-коллекции, перекладывал их с Магеи 6 по 8-ю, долго бы копался в 1085 файлах, а  Duplicates Finder мне нашёл их за 2 мин (хотя всего 8 штук)

BoDun⇓ пишет:

Добавлен перевод на итальянский язык

Нашлись желающие из Италии?

22

algri14, рад, что пригодилось и помогло good

algri14⇓ пишет:

Нашлись желающие из Италии?

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

algri14, 1.6.8 выпущен, баг с сохранением в txt исправлен

Обычный юзер
Mageia 8 x86_64 Plasma

23

BoDun⇓ пишет:

1.6.8 выпущен, баг с сохранением в txt исправлен

угу, теперь работает!