Как найти дубликаты файлов, исключая .svn-каталоги (сначала по размеру, затем по хэшу MD5)

find -type d -name ".svn" -prune -o -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type d -name ".svn" -prune -o -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate


Команда find ищет дубликаты файлов, исключая каталоги .svn. Сначала она ищет файлы, исключая каталоги .svn, сортирует их по размеру, затем находит дубликаты по хэшу MD5.

find -type d -name ".svn" -prune -o -not -empty -type f -printf "%s\n" находит все непустые файлы, исключая каталоги .svn и выводит их размер.

sort -rn сортирует размеры файлов в обратном порядке.

uniq -d находит повторяющиеся размеры файлов.

xargs -I{} -n1 find -type d -name ".svn" -prune -o -type f -size {}c -print0 находит файлы того же размера, исключая .svn каталоги, и выводит их с нулевым разделителем.

xargs -0 md5sum вычисляет хэш MD5 для каждого файла.

sort сортирует хэши MD5.

uniq -w32 --all-repeated=separate находит дубликаты файлов, основанные на хэше MD5 (32 символа), выводя каждую группу дубликатов отдельно.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *