Упражнение: найти и посчитать файлы-дубликаты
...
Основная задача, над репозиторием zsh
Задача
Собрать статистику по файлам-дубликатам в проекте. За дубликаты считаем файлы с одинаковыми содержимым, но возможно с разными названиями
- Склонируйте репозиторий zsh.
- Посчитайте, сколько наборов файлов-дубликатов есть в исходном коде
- Какое самое большое количество повторений одного и того же содержимого?
- Посчитайте, сколько файлов в исходном коде дублируются и содержимым, и именами
- Какие именно файлы дублируются содержимым?
В п.5 выведите ответ в таком формате:
### set of cardinality 2
./dir1/file1
./dir2/file2
### set of cardinality 2
./dir3/file3
./dir3/file4
### set of cardinality 3
./dir1/dir11/file5
./dir2/dir21/file6
./dir3/file7
Детали
zsh на гитхабе: здесь.
Или сразу: git clone https://github.com/zsh-users/zsh.git
Погнали?
- Сколько времени заняло решение?
- Сколько времени работает полученная программа или команда?
- Если бы в репозитории было в 10 раз больше файлов, насколько дольше работала бы программа или команда?
Дополнительная задача: подготовка тестовых данных
Задача
- Создайте случайную структуру из вложенных каталогов
- общее количество каталогов – несколько десятков (но можно и больше)
- глубина вложенности каталогов – до 10 (но можно и больше)
- В случайных местах этой структуры создайте файлы со случайными именами и случайным содержимым, и чтобы некоторые файлы совпадали по содержимому
Посчитайте статистику по дубликатам.
Дополнительная-дополнительная задача
Поменяйте параметры генерации:
- количество каталогов
- максимальная вложенность
- кустистость
- общее количество файлов
- количество и распределение дубликатов (сколько дубликатов, какое максимальное количество повторений)
Снова посчитайте статистику.
Погнали?
- Сколько времени заняла подготовка тестовых данных?
- Что оказалось сложнее/интереснее – основная задача или подготовка тестовых данных?