удалить идентичные двоичные файлы из каталога, используя md5 - PullRequest
0 голосов
/ 06 июня 2019

В Linux-машине я сказал, что 100k бинарных файлов.Я знаю, что у меня точно такие же файлы, как можно с помощью md5 удалить все дубликаты файлов из папки?Я попытался без удачи с diff + xxd

1 Ответ

0 голосов
/ 06 июня 2019

Привет и добро пожаловать в StackOverflow!

Вы можете сделать это в одну строку с использованием md5sum и awk:

# Execute in the same directory as your files:

md5sum * | awk '{ if (FILES[$1] != "") { print $2 " is a duplicate with " FILES[$1] } else { FILES[$1] = $2 } }'

Если вы хотите удалитьна том же шаге, а не просто выведите имена файлов:

md5sum * | awk '{ if (FILES[$1] != "") { system("rm " $2) } else { FILES[$1] = $2 } }'

. Это следующее:

  • Возьмите выходные данные md5sum и передайте их awk
    • Выходные данные - это md5-хэш и имя файла, разделенные пробелом: 44e48799743fd961ee523c1e3e3ac7cd 991.data
  • Проверьте, есть ли у нас этот хэш в нашем массиве с именем FILES
  • Если массив содержит хэш, распечатайте дубликат файла предупреждения / удаления
  • Если его нет в массиве, сохраните его в массиве

Надеюсь, это поможетвы!

...