Сравнение уровня точности md5sum

[2-20]+не является правильным способом проверить, находится ли число в диапазоне от 2до 20. Квадратные скобки в регулярном выражении просто соответствуют одному символу, который соответствует любому из символов внутри него. И -в наборе символов используется для указания диапазона символов (, например. 2-9илиa-z); диапазон 2-2такой же, как просто 2.Итак, [2-20]+эквивалентно [20]+, соответствует любой последовательности символов 2и 0, например 2, 20, 02, 2200и т. д.

Должно быть ([2-9]|1[0-9]|20). Это соответствует одной цифре от 2до 9, 1, за которой следует 0до 9или 20.

Если вы используете GNU find, вы можете использовать оператор -deleteвместо -exec rm {} \;.

И нет необходимости использовать 2>&1, если вы не перенаправляете стандартный вывод. По умолчанию как стандартный вывод, так и стандартная ошибка отправляются пользователю по почте.

@weekly find /var/log/ \( -iregex '.*\.([2-9]|1[0-9]|20)' -o -iname "*.gz" \) -delete
1
18.04.2020, 20:51
1 ответ

Вероятность столкновения md5sum равна 1 из 2 64 . См. этот пост на crypto.se для получения более подробной информации.


SideNote:Содержимое файла хэшируется, имя файла не играет никакой роли в хешировании. Вы уверены, что файлы разные, а не только имена?

$ md5 /tmp/files.txt*
MD5 (/tmp/files.txt) = 29fbedcb8a908b34ebfa7e48394999d2
MD5 (/tmp/files.txt.clone) = 29fbedcb8a908b34ebfa7e48394999d2
1
19.03.2021, 02:27

Теги

Похожие вопросы