Я создаю небольшой инструмент, который будет загружать файлы с помощью wget, читая ссылки из разных файлов. Один и тот же URL может присутствовать в разных файлах; URL может даже присутствовать в одном файле несколько раз. Было бы неэффективно загружать страницу несколько раз (каждый раз, когда ее URL-адрес находился в списке (ах)).
Таким образом, простой подход состоит в том, чтобы сохранить загруженный файл и дать команду wget не загружать его снова, если он уже существует.
Это было бы очень просто; однако URL-адреса очень длинные (многие параметры GET) и поэтому не могут использоваться как таковые для имен файлов (wget выдает ошибку «Невозможно записать в ... [] имя файла слишком длинное»).
Итак, мне нужно переименовать загруженные файлы. Но для того, чтобы механизм кэширования работал, схема переименования должна реализовывать «один URL <=> одно имя»: если данный URL может иметь несколько имен, кэширование не работает (т. Е. Если я просто нумерую файлы в порядке они найдены, я не позволю wget определить, какие URL уже были загружены).
Простейшей схемой переименования было бы вычисление хеша md5 имени файла (и , а не самого файла, что и делает md5sum); это обеспечило бы уникальность имени файла и то, что данный URL всегда будет иметь одинаковое имя.
Это можно сделать в Perl и т. Д., Но можно ли это сделать непосредственно в bash или с помощью системной утилиты (RedHat)?