Linux🐧
July 24, 2023

Поиск одинаковых файлов, на линуксе.

Код взят из книги "LINUX Командная строка" Джей Баретт

Мы находимся в папке test в ней есть дублирующиеся файлы, для начала начнем с разведки.

$ ls 
вывод:

Имеем 5 файлов.

Применим команду md5sum.

$ md5sum *

Вычислив с помощью md5sum, контрольные суммы файлов, мы видим, что имеются дублирующиеся файлы, т.к. их контрольные суммы совпадают, это легко увидеть если 5 файлов всего, в папке....А, что делать если их там тысячи?

Для начала обрежем в выводе имена файлов, они для анализа нам не нужны. И отсортируем полученный результат.

$ md5sum * | cut -c1-32 | sort

Так как, мы лентяи и нам лень считать число повторяющихся копий, предоставим эту работу компьютеру.

$ md5sum * | cut -c1-32 | sort | uniq -c

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

$ md5sum * | cut -c1-32 | sort | uniq -c | sort -nr

Во так будет дело лучше....

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

$ md5sum * | cut -c1-32 | sort | uniq -c | sort -nr | grep -v "      1 "

Но извентиляюсь, нам нужны не контрольные суммы, а файлы :-) Поэтому копируем контрольную сумму, и ищем файлы в каталоге с ней.

$ md5sum * | grep c8303abab274ff40b3c210a52cdeca13

Уберем лишнее с экрана.

$ md5sum * | grep c8303abab274ff40b3c210a52cdeca13 | cut -c35-

Имеем имена дубликатов... решаем, какой из-них удалить....но это совсем уже другая история.