Привет и добро пожаловать в 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
- Если массив содержит хэш, распечатайте дубликат файла предупреждения / удаления
- Если его нет в массиве, сохраните его в массиве
Надеюсь, это поможетвы!